2011-02-12 61 views
0

嘿,那裏,我需要一些MYSQL連接的幫助,我真的不知道如何實現,或者如果MySQL允許的話。MySQL多表連接ID

我有一些表設置,post_controller,post_text,post_photo,post_link。

post_controller具有所有ID,post_text,post_photo,post_link表不能有條目,除非post_controller有一個id條目(外鍵)。我這樣做是因爲我有不同類型的帖子,我想要檢索它們,而不管帖子的類型如何,所以我只是在主表中使用ID。

我想知道的是,我如何加入3表與主表,形成所有職位的大陣,可以說我想職位1至20 ..是否有可能我加入每個類似於每個表的帖子類型。

 
post_contoller 

id userid type time 
1  2  1  00:00 
2  4  1  00:00 
3  5  2  00:00 
4  23  2  00:00 
5  8  3  00:00 
 
 
post_text 

id content  title 
1 {sometext} {sometext} 
2 {sometext} {sometext} 
 
 
post_photo 

id content  hash 
3 {sometext} {somehash} 
4 {sometext} {somehash} 
 
 
post_link 

id content  desc  link 
5 {sometext} {sometext} {somelink} 
 

結束所得的數據集。

 
post_photo 

id userid type time content  title  desc  link  hash 
1  2  1  00:00 {sometext} {sometext} 
2  4  1  00:00 {sometext} {sometext} 
3  5  2  00:00 {sometext} 
4  23  2  00:00 {sometext}         {somehash} 
5  8  3  00:00      {sometext}{somelink} 
 

通過在post_controller中加入3個關於主ID的表,可以實現此結果集。如果是,請解釋,如果沒有,請儘可能提出替代解決方案。

謝謝。

+0

您檢查了`UNION`或'左JOIN`?其中任何一個應該以某種形式得到你想要的東西。 – jswolf19 2011-02-12 02:55:20

回答

1

是的,這是可能的:

SELECT c.*, 
      IFNULL(IFNULL(p.content, t.content), l.content) AS content, 
      t.title, 
      l.desc, 
      l.link, 
      p.hash 
    FROM post_contoller c 
LEFT JOIN post_text t ON t.id = c.id 
LEFT JOIN post_photo p ON p.id = c.id 
LEFT JOIN post_link l ON l.id = c.id 
+0

看起來很有希望,我會嘗試一下,看看它是否適合我。 – 2011-02-12 03:02:13