【发布时间】:2018-08-05 23:53:04
【问题描述】:
我有 3 个正在使用的表,需要根据第二个表中单个列的值进行查询以从一个表中返回数据。
-
tbl_user
- 身份证
- 登录
- 通过
- 有效
- mscID
-
tbl_master
- 身份证
- 姓名
- 培训日期
- MSCUnit
- 活动
-
tbl_msc
- mscID
- 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_user.mscID 中的值与 tbl_msc.mscID 的值相匹配。 tbl_master.UnitMSC 中存储的值也与 tbl_msc.mscID 的值匹配。
我的目标是从 tbl_master 返回当前登录用户具有相同 mscID 的所有记录。我遇到的问题是语句返回 tbl_master 中的所有记录。
我尝试了几种不同的连接语句,但由于某种原因,我无法正确过滤。
我错过了一些东西。对 SQL 语句的任何帮助将不胜感激。
谢谢, 会
【问题讨论】:
-
您的问题源于通过
FROM子句中的多个表使用笛卡尔积。请改用INNER JOIN -
如果你还在苦苦挣扎,请参阅meta.stackoverflow.com/questions/333952/…
-
如何知道当前登录的用户是谁?