2010-05-11 43 views
0

我如何運行兩個MySQL查詢作爲一個(返回一個結果集進行排序等)有點失落。MySQL的多個地方和內部聯接查詢組合

我明白怎麼做多次join但需要結合低於不僅僅是一個多更加入 - 這將包括多個where等

1查詢

 sql = "SELECT s.id, s.song_name 
      FROM `songs` as s 
      INNER JOIN `artists` as a ON s.artist_id = a.id 
      WHERE ((`a`.id = #{search}))" 

第二查詢

sql = "SELECT s.id, s.song_name 
     FROM `songs` as s 
     INNER JOIN `similarments` as si ON s.artist_id = si.artist_id 
     WHERE ((`si`.similar_id = #{search}))" 

然後同時運行兩個查詢,所以我可以命令他們等 或將它們組合成一個大的查詢(也許把一個或其他地方)?

謝謝!

+0

LEFT JOIN兩個表在單個查詢從歌曲... – 2010-05-11 22:23:38

回答

4

運行兩個查詢併合並結果的簡單方法是使用UNION(或如果不希望刪除重複項,則使用UNION ALL)。在你的情況是這樣的:

(
    SELECT s.id, s.song_name 
    FROM `songs` as s 
    INNER JOIN `artists` as a ON s.artist_id = a.id 
    WHERE ((`a`.id = #{search})) 
) 
UNION 
(
    SELECT s.id, s.song_name 
    FROM `songs` as s 
    INNER JOIN `similarments` as si ON s.artist_id = si.artist_id 
    WHERE ((`si`.similar_id = #{search})) 
) 
ORDER BY .... 
+0

酷。謝謝! – djburdick 2010-05-11 22:30:15