php
  • mysql
  • sql
  • 2012-03-20 183 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

    相关问题