我正在尝试连接两个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
通过t.sorder asc 从(query1联合query2)t顺序中选择t.sorder、t.other_fields