php
  • mysql
  • sql
  • 2012-03-20 187 views 0 likes 
    0

    我試圖加入兩個SQL查詢,我嘗試了一些解決方案,以前在堆棧上提出的問題,並且無法獲得所需的輸出。將兩個SQL查詢合併到一個查詢中

    我的第一個SQL查詢

    SELECT * FROM albums_songs 
    LEFT JOIN audio USING(AUDID) 
    WHERE ARTID='".mysql_real_escape_string($artid)."' 
    AND ALBID='".mysql_real_escape_string($albid)."' 
    

    二是

    SELECT * FROM `albums_s` 
    WHERE ALBUMID='".mysql_real_escape_string($albid)."' 
    AND placeholder='1' 
    

    我需要這些加入到一個單一的表中加入他們的SQL查詢後,並經ORDER BY sorder asc

    有序

    我試過的最好的查詢是以下內容,不過它將兩個查詢一起乘以矩陣乘法,結果是額外的ro WS:

    SELECT * FROM 
    
    (SELECT * FROM albums_s 
        LEFT JOIN audio USING(AUDID)) as t1, 
    
    (SELECT * FROM `albums_s`) as t2 
    
    WHERE t1.ARTID='".mysql_real_escape_string($artid)."' 
    AND t1.ALBID='".mysql_real_escape_string($albid)."' 
    AND t2.placeholder='1' 
    AND t2.ALBID='".mysql_real_escape_string($albid)."' 
    ORDER BY t1.sorder asc"; 
    

    所以結果應該是相同的結果到第一兩個查詢,但剛加入到最終的陣列,並通過查詢sorder asc

    編輯/ 輸出有序1是大的,但必要的項目有:與一些示例性數據輸出查詢

    AUDID ASID ALBID ARTID sorder placeholder sname  phname phimage coverart playcount 
        2  1  4  72  5   0   name1   NULL  NULL  img1.jpg 543 
        5  2  4  72  2   0   name2   NULL  NULL  img2.jpg 127 
        4  3  6  72  3   0   name3   NULL  NULL  img3.jpg 
    
    AUDID ASID ALBID ARTID sorder placeholder phname phimage 
        6  4  4  72  4   1   name4  img4.jpg 
    

    新的查詢後,結果應該是(WHERE ALBID = 4和artid的數據類型= 72)

    AUDID ASID ALBID ARTID sorder placeholder sname phname phimage coverart playcount 
        5  2  4  72  2   0   name2   NULL  NULL  img2.jpg 127 
        4  3  6  72  3   0   name3   NULL  NULL  img3.jpg 
        6  4  4  72  4   1   NULL   name4  img4.jpg NULL NULL 
        2  1  4  72  5   0   name1   NULL  NULL  img1.jpg 543 
    

    如可以看到的,輸出端是相同的,唯一不同的是表已經結合成一體,然後sorder

    +0

    查詢1,查詢2的顯示結果排序,你的連接查詢。 – bos 2012-03-20 16:25:00

    +0

    如果我知道如何像你說的那樣簡單地做到這一點,你不覺得我已經擁有了嗎? ;) – JimmyBanks 2012-03-20 16:28:22

    +0

    我猜bos的意思是發佈查詢的結果,所以我們可以更好地幫助您 – Iridio 2012-03-20 16:31:15

    回答

    0

    選擇t.sorder,從(QUERY1工會QUERY2)筆訂單t.other_fields通過t.sorder ASC

    +0

    調查UNION是如何將我引向一個可行的示例。 – JimmyBanks 2012-03-20 17:19:10

    相關問題