2010-06-11 15 views
10

Bu sorguya sahibim (bazı anahtarlar brevity'nin hatırı için kaldırdım):Bu sendika sonucuna nasıl sütun ekleyebilirim?

SELECT id as in_id, out_id, recipient, sender, read_flag 
    FROM received WHERE recipient=1 
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag 
    FROM sent WHERE sender=1 

Belirli bir kullanıcı tarafından gönderilen ve alınan iletileri gösteren iki tablodan alınan sonuçları bir araya getirir. Ne yapmak istediğim, satırın hangi tabloyu görüntülediğimi ayırt etmek için sonuca bir sütun/bayrak eklemektir, böylece onları görüntülediğimde gönderilen veya alınan iletiler için ilgili bir simge gösterebilirim. Bunu nasıl eklerim?

cevap

16

Her sorguya bir sabit sütun ekleyin. Her iki parçada da aynı olduğu sürece ne olduğu önemli değil. Her seçeneğini de

SELECT id as in_id, out_id, recipient, sender, read_flag , 'received' as source 
    FROM received WHERE recipient=1 
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag , 'sent' as source 
    FROM sent WHERE sender=1 
+0

Awesome thank you! +1 –

+0

Çok yararlı bir soru ve mükemmel bir cevap! Teşekkürler –

+0

Teşekkür ederiz @ Mark Byers – aziz

2

Sadece bir sabit kodlanmış değer ile sütun ekleyin:

 
SELECT id as in_id, out_id, recipient, sender, read_flag, 'received' as source_table 
    FROM received WHERE recipient=1 
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag, 'sent' as source_table 
    FROM sent WHERE sender=1 
+0

Ve ben de teşekkürler! –

2

Bu yapacağım: Yani örneğin, 0 ve 1 ya da iki dizeyi kullanabilirsiniz

SELECT 'r' as type, id as in_id, out_id, recipient, sender, read_flag 
    FROM received WHERE recipient=1 
UNION ALL 
SELECT 's' as type, in_id, id AS out_id, recipient, sender, read_flag 
    FROM sent WHERE sender=1 
+0

Hepiniz çok naziksiniz, teşekkürler! –

İlgili konular