douganggu4392 2016-02-26 14:44
浏览 43
已采纳

组合2选择合二为一

I have a query in mysql which work perfect.

        $result =mysql_query("
            SELECT a.IDN, c.Name_F, c.Name_L, d.Url_photo, 
                    ( SELECT COUNT(*)
                        FROM Messages AS e
                        WHERE   e.IDN = a.IDN               
                    ) AS mes_new ,
                    ( SELECT LEFT(s.Messages,25)
                        FROM Messages AS s
                        WHERE s.Time= (SELECT MAX(k.Time)
                        FROM Messages AS k
                        WHERE k.IDN = a.IDN)

                    ) AS latest 
            FROM offers AS a 
                    LEFT JOIN info AS c
                ON a.IDN = c.IDN
                    LEFT OUTER JOIN photos AS d
                ON c.IDN = d.IDN AND d.Flag_av='1'

            Where a.IDN_with='$IDN' AND a.Status='2'    
        ");

But I have also one IDN and need to make also a similar another Select. Something like that:

            $result =mysql_query("
            SELECT a.IDN, c.Name_F, c.Name_L, d.Url_photo, 
                    ( SELECT COUNT(*)
                        FROM Messages AS e
                        WHERE   e.IDN = a.IDN               
                    ) AS mes_new ,
                    ( SELECT LEFT(s.Messages,25)
                        FROM Messages AS s
                        WHERE s.Time= (SELECT MAX(k.Time)
                        FROM Messages AS k
                        WHERE k.IDN = a.IDN)

                    ) AS latest 
            FROM users AS a 
                    LEFT JOIN info AS c
                ON a.IDN = c.IDN
                    LEFT OUTER JOIN photos AS d
                ON c.IDN = d.IDN AND d.Flag_av='1'

            Where  a.IDN='$active'  
        ");

So as you can see change only table (from offer to user) and condition (Where), but is it possible to make it in one Select? As double select I thought about UNION since if the IDN will be in two table the row can repeat and I don't need it. But again I would like to have it in one Select. Is it possible?

  • 写回答

1条回答 默认 最新

  • doutizhou5312 2016-02-26 15:03
    关注

    Well I figured it out by my self, since user table have all users I will take all row from them with more complex condition. The first tests got good. If you see mistake or have a better variant please share ))) THANKS.

            $result =mysql_query("
                SELECT a.IDN, c.Name_F, c.Name_L, d.Url_photo, 
                        ( SELECT COUNT(*)
                            FROM Messages AS e
                            WHERE   e.IDN = a.IDN               
                        ) AS 'mes_new' ,
                        ( SELECT LEFT(s.Messages,25)
                            FROM Messages AS s
                            WHERE s.Time= (SELECT MAX(k.Time)
                            FROM Messages AS k
                            WHERE k.IDN = a.IDN)
    
                        ) AS latest 
                FROM users AS a 
                        LEFT JOIN offers AS r
                    ON a.IDN = r.IDN 
                        LEFT JOIN info AS c
                    ON a.IDN = c.IDN
                        LEFT OUTER JOIN photos AS d
                    ON c.IDN = d.IDN AND d.Flag_av='1'
    
                Where (r.IDN_with='$IDN' AND r.Status='2') OR a.IDN='$active'       
            ");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么