【发布时间】:2012-03-20 16:18:32
【问题描述】:
我正在尝试加入两个 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 and 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、查询 2 和您的连接查询的结果。
-
如果我知道如何像你说的那样简单地做,你不认为我已经会了吗? ;)
-
我猜博斯的意思是发布查询结果,以便我们更好地帮助您
-
显示 us 查询 1、查询 2 和您的连接查询的结果...如果您不知道该怎么做,那么您将陷入困境椅子。
-
对不起,我误读了您的回复,认为这是关于如何做的答案,而不是关于您想看什么的问题,在上面的编辑中添加