Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于表2中单列的表1返回值_Mysql_Sql - Fatal编程技术网

Mysql 基于表2中单列的表1返回值

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

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

  • tbl_用户

    • 身份证
    • 登录
    • 通过
    • 活跃的
    • mscID
  • tbl_硕士

    • 身份证
    • 名字
    • 培训日期
    • MSCUnit
    • 活跃的
  • tbl_理学硕士

    • mscID
    • mscName
我当前的SQL语句:

选择
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 = ?;