我正在尝试创建一个从三个表中选择的查询。
m_release --------------------------- release_id name --------------------------- 1 release1 2 release2 3 release3 mk_release_artist --------------------------- release_id artist_id --------------------------- 1 134 2 135 mk_release_remix --------------------------- release_id artist_id --------------------------- 3 134
到目前为止,我已创建了以下查询,但它不会返回任何行:
SELECT * FROM m_release A JOIN mk_release_artist B ON A.release_id = B.release_id AND B.artist_id = 134 JOIN mk_release_remix C ON A.release_id = C.release_id AND C.artist_id = 134
当我使用一个JOIN
从两个表中选择时,它正在工作SELECT * FROM m_release A JOIN mk_release_artist B ON A.release_id = B.release_id AND B.artist_id = 134
我期望看到的输出是:
--------------------------- release_id name --------------------------- 1 release1 3 release3
答案 0 :(得分:0)
因此,在B
中,author_id
是作者,而在C
中,它是混音师。然后您的查询选择条目,其中作者和混音器是id=134
。在您的示例中没有匹配的条目。
juergen d's query会选择作者或混音器为id
的条目。由于它使用LEFT JOIN
s,它甚至会获得B
或C
中没有相应条目的版本(相应的列将为NULL
)。
答案 1 :(得分:0)
SELECT A.*
FROM m_release A
LEFT JOIN mk_release_artist B ON A.release_id = B.release_id
LEFT JOIN mk_release_remix C ON A.release_id = C.release_id
WHERE 134 in (B.artist_id, C.artist_id)