你在那裏做了什麼是一個隱含的連接,這是一個INNER JOIN
。這很難閱讀和有點混亂,我建議反對它。
您正在尋找LEFT JOIN
或RIGHT JOIN
。 的LEFT JOIN
讓你在左側的所有值,在結果的右側部分與NULL
填充:
SELECT *
FROM fixtures f,
LEFT JOIN fixture_channel fcj ON f.fixtures_id = fcj.fixture_id
LEFT JOIN channel c ON fcj.channel_id = c.id
WHERE f.matchday = '1'
這將使你在fixtures
表中的所有值(包括那些不匹配),然後是fixture_channel
表中的匹配值(其中NULL
值不存在任何匹配),然後是channe
l表中的匹配值(其中NULL
值不存在任何匹配)。
或者,RIGHT JOIN
會給你所有值從右側,左側與NULL
填充:
SELECT *
FROM fixtures f,
RIGHT JOIN fixture_channel fcj ON f.fixtures_id = fcj.fixture_id
RIGHT JOIN channel c ON fcj.channel_id = c.id
WHERE f.matchday = '1'
這將使你在channel
表中的所有值(包括那些不匹配) ,前面是fixture_channel
表中的值(NULL
值與不匹配任何通道的那些人的值),前面是fixture
表中的值(具有不匹配燈具的fixture_channel值的NULL
值)。我們反過來說明它是從右到左。
更多關於加入here,圖文並茂:)
*不要*的'FROM'子句中使用逗號。 *總是*使用正確的,明確的'JOIN'語法。 –