我正在尝试加入两个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命令
答案 0 :(得分:0)
从t.sorder asc中选择t.order,to。其他字段(查询1 union query2)t order