【问题标题】:Two SQL queries into one query两个 SQL 查询合二为一
【发布时间】: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 和您的连接查询的结果...如果您不知道该怎么做,那么您将陷入困境椅子。
  • 对不起,我误读了您的回复,认为这是关于如何做的答案,而不是关于您想看什么的问题,在上面的编辑中添加

标签: php mysql sql


【解决方案1】:

Select t.sorder, t.other_fields from (query1 union query2) t order by t.sorder asc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多