2014-03-25 101 views
0

的3類不同的表我有3個表加入基於崗位

職位(含每一個崗位類型)

ID | type | PostID | timestamp 
1 | 1 | 1  | 1378561301 
2 | 2 | 1  | 1378561302 
3 | 1 | 2  | 1378561303 
4 | 2 | 2  | 1378561304 

posts_messages

ID | message 
1 | CAT 
2 | RAT 

posts_photos

ID | photo  | caption 
1 | ant.jpg | Ant 
2 | orange.jpg | Orange 

我想得到th Ë導致這樣

結果:

ID | Type | PostID  | timestamp | message | photo  | caption 
1 | 1 | 1   | 1378561301 | CAT  | null  | null 
2 | 2 | 1   | 1378561302 | null  | ant.jpg | Ant 
3 | 1 | 2   | 1378561303 | RAT  | null  | null 
4 | 2 | 2   | 1378561304 | null  | orange.jpg | Orange 

我已經試過是UNION,但它不是完整的。任何建議/替代查詢?

+1

所以ID在posts_messages和posts_photos是一個從帖子ID? –

+1

sqlfiddle或您的查詢是必要的。 –

+0

@AbhikChakraborty是的 –

回答

5

事情是這樣的,我認爲: -

SELECT a.ID, a.Type, a.PostID, a.timestamp, b.message, c.photo, c.caption 
FROM posts a 
LEFT OUTER JOIN posts_messages b 
ON a.PostID = b.ID AND a.type = 1 
LEFT OUTER JOIN posts_photosposts_photos c 
ON a.PostID = c.ID AND a.type = 2 
+1

[**這是正確的答案**]( http://sqlfiddle.com/#!2/0cab3a/5) –

3

您可以使用下面的查詢 -

select p.ID,p.Type,p.PostID,p.timestamp ,pm.message ,pp.photo,pp.caption 
from posts p 
left join posts_messages pm on pm.ID = p.ID 
left join posts_photos pp on pp.ID = p.ID 
+1

[不按給定的結果集](http://sqlfiddle.com/#!2/0cab3a/3) –

+0

@MKhalidJunaid我沒有得到你的意思。它是一對多的關係。並使用左連接,我可以在每一行中獲取數據。 –

+0

查看[this fiddle](http://sqlfiddle.com/#!2/0cab3a/5)哪個結果集用戶要求 –

1

試試這個,

select p.ID,p.Type,p.PostID,p.timestamp ,pm.message ,pp.photo,pp.caption 
from posts p 
left join posts_messages pm on pm.ID = p.ID 
    and p.type = 1 
left join posts_photos pp on pp.ID = p.ID 
    and p.type = 2