首页 > 解决方案 > 根据表 2 中的单列返回表 1 的值

问题描述

我有 3 个正在使用的表,需要根据第二个表中单个列的值进行查询以从一个表中返回数据。

我当前的 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_user.mscID 中存储的值与 tbl_msc.mscID 中的值相匹配。存储在 tbl_master.UnitMSC 中的值也与 tbl_msc.mscID 的值相匹配。

我的目标是从当前登录的用户具有相同 mscID 的 tbl_master 返回所有记录。我遇到的问题是该语句返回 tbl_master 中的所有记录。

我尝试了几种不同的连接语句,但由于某种原因,我无法正确过滤。

我错过了一些东西。SQL 语句中的任何帮助将不胜感激。

谢谢,威尔

标签: mysqlsql

解决方案


你应该用joins 来写这个。我不知道你怎么知道当前用户是谁,但想法是将三个表连接在一起:

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的语法和表别名。


推荐阅读