mysql,多表连接WHERE子句

mysql,多表连接WHERE子句,mysql,join,Mysql,Join,我使用的是Mysql,我很难从SELECT查询中获得结果。我有两张桌子。第一桌果酱和第二桌贾德瓦尔布洛克。此表中的数据是静态的: select * from jam idjam nmjam 01 09.00-09.50 02 10.00-10.50 03 11.00-11.50 04 12.00-13.00 select * from jadwalblok idjadwal idjam ruang tgl 1 01 601 2017-04-

我使用的是Mysql,我很难从SELECT查询中获得结果。我有两张桌子。第一桌果酱和第二桌贾德瓦尔布洛克。此表中的数据是静态的:

select * from jam
idjam nmjam
01    09.00-09.50
02    10.00-10.50
03    11.00-11.50
04    12.00-13.00   

select * from jadwalblok
idjadwal idjam ruang tgl
1        01    601   2017-04-24
2        03    602   2017-04-25
我使用连接来获得结果

SELECT jam.idjam,
       jam.nmjam,
       jadwalblok.idruang,
       jadwalblok.tgl
FROM jam
LEFT JOIN jadwalblok ON jadwalblok.idjam = jam.idjam
WHERE jadwalblok.tgl='2017-04-24'
但我没有得到正确的结果。我希望结果如下所示:

idjam nmjam        ruang tgl
01    09.00-09.50  601   2017-04-24
02    10.00-10.50  null  null
03    11.00-11.50  null  null
04    12.00-13.00  null  null

您需要将
jadwalblok.tgl='2017-04-24'
标准从
where
子句移动到连接条件,因为
where
子句是在两个表连接之后应用的,而连接条件是在连接期间应用的:

SELECT jam.idjam,
       jam.nmjam,
       jadwalblok.idruang,
       jadwalblok.tgl
FROM jam
LEFT JOIN jadwalblok ON jadwalblok.idjam = jam.idjam and jadwalblok.tgl='2017-04-24'

您需要将
jadwalblok.tgl='2017-04-24'
标准从
where
子句移动到连接条件,因为
where
子句是在两个表连接之后应用的,而连接条件是在连接期间应用的:

SELECT jam.idjam,
       jam.nmjam,
       jadwalblok.idruang,
       jadwalblok.tgl
FROM jam
LEFT JOIN jadwalblok ON jadwalblok.idjam = jam.idjam and jadwalblok.tgl='2017-04-24'

下次运行查询时,请显示您得到的结果,这是一个巨大的帮助。在这种情况下,我可以确定出哪里出了问题,但对于更复杂的查询来说,情况可能不是这样。下次请显示您运行查询时得到的结果,这将是一个巨大的帮助。在这个特殊的例子中,我可以确定哪里出了问题,但对于更复杂的查询来说,情况可能不是这样。