根据表2中的单列返回表1的值

r1wp621o  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(269)

我使用了3个表,需要根据第二个表中单个列的值进行查询以从一个表返回数据。
tbl\U用户
身份证件
登录
通过
积极的
摩根士丹利资本国际公司
tbl\U主机
身份证件
名称
培训日期
MSC单元
积极的
待定理学硕士
摩根士丹利资本国际公司
MSC名称
我当前的sql语句:

SELECT
   tbl_master.ID,
   tbl_master.name, 
   tbl_master.training_date, 
   tbl_master.MSCUnit,
   tbl_master.active, 
   tbl_user.mscID
 FROM
   tbl_master, 
   tbl_user
 WHERE
   tbl_master.active = 1 AND tbl_master.MSCUnit = tbl_user.mscID

tbl_msc.mscid中存储的值是varchar(11),它包含一个类似于a00或a19的字符串。这也是表中的主键。
tbl\u user.mscid中存储的值与tbl\u msc.mscid中的值匹配。tbl\u master.unitmsc中存储的值也与tbl\u msc.mscid中的值匹配。
我的目标是从tbl\u master返回当前登录用户具有相同mscid的所有记录。我遇到的问题是语句返回tbl\u master中的所有记录。
我尝试了几个不同的join语句,由于某些原因,我无法正确地筛选它。
我错过了一些东西。在sql语句中的任何帮助都将不胜感激。
谢谢,威尔

nnt7mjpx

nnt7mjpx1#

你应该用 join s。我不知道您如何知道当前用户是谁,但我们的想法是将三个表连接在一起:

SELECT m.ID, m.name, m.training_date, m.MSCUnit, m.active, 
       u.mscID
FROM tbl_master m JOIN
     tbl_user u
     ON m.MSCUnit = u.mscID JOIN
     tbl_msc msc
     ON msc.mscID = u.msc_ID
WHERE m.active = 1 AND msc.mscName = ?;

注意使用适当的,明确的,标准的 JOIN 语法和表别名。

tjjdgumg

tjjdgumg2#

Select a.*, b.userid from 
table_master a, table_user b where 
a.mscunit in (select mscid from 
table_user where active=1)

这会给你指明正确的方向。

相关问题