繁体   English   中英

将两个查询合二为一?

[英]Combine Two Queries into One?

我有一个audioids查询,它从subscribe表中的某个用户中选择所有音频。

然后我有另一个查询,它获取这个audioids列表并将它们与一个名为opids的表中的一个名为audioposts的字段进行匹配。 然后它从该audioposts表中选择titles ,并在userid处加入users表中的用户。

有没有办法可以将这两个查询变成一个查询?

query1 = "SELECT audioid FROM subscribe WHERE userid = $userid";                            
                    
query2 = "SELECT ap.audioid, ap.title, us.name FROM audioposts ap                   
        INNER JOIN audioposts a2 ON a2.audioid = ap.opid
        INNER JOIN users us ON us.id = a2.userid 
        WHERE ap.opid = $newaudio";

这是我想用一个查询替换的当前两个查询代码。 我还没有把它翻译成准备好的陈述,因为我更容易用老式的方式来想象它。 另外,无论如何,我最终都会将其转换为 NodejS;

    $selectaudioid = "SELECT audioid FROM subscribe WHERE userid = $userid";
    $audioResult=$dblink->query($selectaudioid);
    
        if ($audioResult->num_rows>0)   {       
            while ($row = $audioResult->fetch_assoc())  {
                $newaudio = $row[audioid];  
                $getallaudio = "                
                SELECT ap.audioid, ap.title, us.name FROM audioposts ap                     
                INNER JOIN audioposts a2 ON a2.audioid = ap.opid
                INNER JOIN users us ON us.id = a2.userid 
                WHERE ap.opid = $newaudio AND ap.opid <> '0'";
                
                $getallresult = $dblink->query($getallaudio);           
                
                if ($getallresult->num_rows>0)  {                       
                while ($row = $getallresult->fetch_assoc())  {
                    $dbdata[]=$row;                         
        }}}}

只需添加另一个加入subscribe

SELECT ap.audioid, ap.title, us.name 
FROM audioposts ap                   
INNER JOIN audioposts a2 ON a2.audioid = ap.opid
INNER JOIN subscribe s ON s.audioid = ap.opid
INNER JOIN users us ON us.id = a2.userid 
WHERE s.userid = $userid AND ap.opid <> '0'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM