我的场景:有3个表格用于存储电视节目信息;季节,情节和episode_translation。SQL LEFT JOIN帮助
我的数据:有3季,每季3集,但只有一集的翻译。
我的目标:我想获得一个节目的所有季节和剧集列表。如果有指定语言的翻译,请显示它,否则显示为空。
我试图让意甲1信息语言1:
SELECT
season_number AS season,number AS episode,name
FROM
season NATURAL JOIN episode
NATURAL LEFT JOIN episode_trans
WHERE
id_serie=1 AND
id_lang=1
ORDER BY
season_number,number
结果:
+--------+---------+--------------------------------+
| season | episode | name |
+--------+---------+--------------------------------+
| 3 | 3 | Episode translated into lang 1 |
+--------+---------+--------------------------------+
预期的结果
+-----------------+--------------------------------+
| season | episode| name |
+-----------------+--------------------------------+
| 1 | 1 | NULL |
| 1 | 2 | NULL |
| 1 | 3 | NULL |
| 2 | 1 | NULL |
| 2 | 2 | NULL |
| 2 | 3 | NULL |
| 3 | 1 | NULL |
| 3 | 2 | NULL |
| 3 | 3 | Episode translated into lang 1 |
+--------+--------+--------------------------------+
全部DB转储 http://pastebin.com/Y8yXNHrH
这应该被标记为MySQL – 2010-06-15 14:09:28
哪个版本的SQL? – AllenG 2010-06-15 14:11:15
你在where子句中指定id_lang = 1。如果你把它拿出来,它是否会返回预期的结果? – Shaded 2010-06-15 14:12:15