Mysql 基于表2中单列的表1返回值
我正在使用3个表,需要根据第二个表中单个列的值进行查询以从一个表返回数据Mysql 基于表2中单列的表1返回值,mysql,sql,Mysql,Sql,我正在使用3个表,需要根据第二个表中单个列的值进行查询以从一个表返回数据 tbl_用户 身份证 登录 通过 活跃的 mscID tbl_硕士 身份证 名字 培训日期 MSCUnit 活跃的 tbl_理学硕士 mscID mscName 我当前的SQL语句: 选择 tbl_主ID, tbl_主机名, tbl_硕士培训日期, tbl_master.msc单元, tbl_主控激活, tbl_user.mscID 从…起 tbl_硕士, tbl_用户 哪里 tbl_master.acti
- tbl_用户
- 身份证
- 登录
- 通过
- 活跃的
- mscID
- tbl_硕士
- 身份证
- 名字
- 培训日期
- MSCUnit
- 活跃的
- tbl_理学硕士
- mscID
- mscName
选择
tbl_主ID,
tbl_主机名,
tbl_硕士培训日期,
tbl_master.msc单元,
tbl_主控激活,
tbl_user.mscID
从…起
tbl_硕士,
tbl_用户
哪里
tbl_master.active=1,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中的所有记录
我已经尝试了几个不同的join语句,但由于某些原因,我无法正确地对其进行筛选
我错过了一些东西。SQL语句中的任何帮助都将不胜感激
谢谢,
意志
这将为您指明正确的方向 您应该使用
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 = ?;
请注意正确、明确、标准的
联接
语法和表别名的使用。您的问题源于通过from
子句中的多个表使用笛卡尔乘积。使用内部连接
而不是可能重复的也请参见,如果您仍在努力,请参见如何知道当前登录的用户是谁?这可能是我缺少的步骤。我假设由于用户登录到系统中,表将知道活动用户。我想我需要找出一种方法来检查当前登录的用户。
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 = ?;