两个SQL查询到一个查询中

时间:2012-03-20 16:18:32

标签: php mysql 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

排序

我尝试过的最佳查询如下,除了它将两个查询相乘作为矩阵乘法,结果是附加行:

 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

查询2的输出

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命令

1 个答案:

答案 0 :(得分:0)

从t.sorder asc中选择t.order,to。其他字段(查询1 union query2)t order