具有连接和WHERE条件的MYSQL查询不返回任何行

时间:2018-04-04 20:37:36

标签: mysql inner-join where

我试图运行与其他2个表连接的SQL查询。 但是,我仍然需要在此查询中使用WHERE条件,该条件使用主表的id。在这种情况下,主表是时间表。

我已尝试过以下操作,但根本没有返回任何行:

   SELECT * FROM `timesheets` t 
   INNER JOIN `users` u ON `t`.`teacher_id` = `u`.`id` 
   INNER JOIN `schools` s ON `t`.`school_id` = `s`.`id` 
   WHERE t.id = 46

在这个示例中,我尝试过滤到ID为46的行,肯定存在。

如果我只对时间表表进行简单查询,其中id = 46的条件相同,则返回该特定行。

使用EXPLAIN时,我会在' extra'中收到此消息。柱:

不可能在阅读const表后注意到

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

由于您使用了INNER JOIN,因此仅当表用户和学校主键在时间表中用作外键时才会返回数据。

使用左连接

SELECT * FROM timesheets t 
   LEFT JOIN users u ON t.teacher_id = u.id 
   LEFT JOIN schools s ON t.school_id = s.id 
   WHERE t.id = 46