Birliği Sorunu MySQL sorgu için katılın

2 Cevap php

benim son mesajları kaydeder bir tablodan seçmek başardı

ama seçimi çift durum olması gerekir

İşte benim kod:

$sql_query = "SELECT b.*,u.username AS MY_Sender
FROM TABLE_users u,TABLE_blogs b
Where b.reciever = '0' AND u.user_id = b.sender
UNION
SELECT b.*,u.username AS MY_reciever
FROM TABLE_users u,TABLE_blogs b
Where b.reciever != '0' AND u.user_id = b.reciever
ORDER BY bid DESC
LIMIT 0,7 ";

ama MY_reciever Boş ve boş

Ben bu ihtiyaç için UNION kullanarak yanlış mıyım?!

2 Cevap

Columns across the parts of a union must have the same name. Try:

SELECT b.*,
       u.username AS MY_User
  FROM TABLE_users u,
       TABLE_blogs b 
 WHERE b.reciever = '0' 
   AND u.user_id = b.sender 
UNION 
SELECT b.*,
       u.username AS MY_User
  FROM TABLE_users u,
       TABLE_blogs b 
 WHERE b.reciever != '0' 
  AND u.user_id = b.reciever 
 ORDER BY bid DESC 
 LIMIT 0,7

Eğer bir rekor tarafından iade edildiği BİRLİĞİ parçası ayırt etmek gerekirse, ekstra bir sütun döndürür:

SELECT b.*,
       u.username AS MY_User.
       'Sender' AS MyType
  FROM TABLE_users u,
       TABLE_blogs b 
 WHERE b.reciever = '0' 
   AND u.user_id = b.sender 
UNION 
SELECT b.*,
       u.username AS MY_User.
       'Recipient' AS MyType
  FROM TABLE_users u,
       TABLE_blogs b 
 WHERE b.reciever != '0' 
  AND u.user_id = b.reciever 
 ORDER BY bid DESC 
 LIMIT 0,7

@ Mac Taylor

adam hey, beni anlıyor musun emin, size gönderen değil alıcısı (my_type) bulmak için ince eserler yazdı ve bu deyimi biliyor olabilir .. ben bir daha koşul My_Real_Sender AS yazdı bu açıklamaya eklenen gerektiğini söylemiştim sonrası

Böyle bir şey mi?

SELECT b.*, 
       u.username AS MY_Sender. 
       NULL as MY_Recipient,
       'Sender' AS MyType 
  FROM TABLE_users u, 
       TABLE_blogs b  
 WHERE b.reciever = '0'  
   AND u.user_id = b.sender  
UNION  
SELECT b.*, 
       u1.username AS MY_Sender. 
       u2.username AS MY_Recipient. 
       'Recipient' AS MyType 
  FROM TABLE_users u1, 
       TABLE_users u2, 
       TABLE_blogs b  
 WHERE b.reciever != '0'  
  AND u1.user_id = b.reciever  
  AND u2.user_id = b.sender  
 ORDER BY bid DESC  
 LIMIT 0,7