2016-02-26 32 views
0

我有一個查詢在mysql中工作完美。組合2選擇在一個

 $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'  
     "); 

但我也有一個國際化域名,需要做出類似的另一個選擇。類似的東西:

  $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' 
     "); 

因此,大家可以看到只更改表(從報價到用戶)和條件(在哪裏),但有可能使其在一個選擇?作爲雙選我想過UNION,因爲如果IDN將在兩個表中,該行可以重複,我不需要它。但是我想再一次選擇它。可能嗎?

+0

的聯盟不必須重複。如果選擇1個聯盟選擇2個相同的行不必須重複(如果查詢結果行都是不同的,你將有2列),UNION ALL必須重複 – jrey

+0

是,這是我的意思是工會不會顯示雙排,這是好的,問題是如何從這兩個選擇一個。 –

+0

如果你有..選擇x,1從A其中P UNION選擇x,2從B其中Q.你有2行爲同一個「行」,你可以看到2行..和1或2你可以知道源 – jrey

回答

1

嗯,我想通了我的自我,因爲用戶表具有所有用戶,我會採取他們的所有行與更復雜的條件。第一次測試結果很好。如果你看到錯誤或有更好的變種請分享)))謝謝。

 $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'  
     ");