2012-02-27 61 views
0

所以我一直在尋找這樣做,並想出了我想這是我想做的基礎知識。我有四張桌子。一個是用戶信息表,表示「這是你獲得信息的用戶」。其他三個有我需要的實際信息。如何合併這些選擇/連接?

table_1有關於哪個用戶的信息。所以用戶ID。

table_2對用戶而言具有與table_3的內容相關的唯一標題和說明。 table_3擁有所有基本信息。任何用戶在table_3中都可以有相同的行。 TABLE_3說:「這是內容」和TABLE_2說:「這是這個特定的用戶如何有關係TABLE_3。

TABLE_4是TABLE_2組行。

這樣用戶就可以說我要這張照片,視頻,無論在「酷東西」組中,一旦所有信息都添加到數據庫中,您將在用戶需要的組中找到基本內容信息(table_3),這將成爲用戶特定的內容,因爲將其添加到table_2中

其實將所有的信息都放到數據庫中很容易,把它拉出來放在一起就是我感到困惑的地方,每個ON部分都是相關的,我的數據庫在nodb和我設置了外鍵,例如在第一個SELECT上table_2.userId是table_1.id的外鍵。

而我最後想要的是我猜標題,描述,鏈接,組名稱的數組。我使用PHP與MySQL,但我想我可以找出我需要做的事情,如果我真的可以得到正確的查詢或我需要的查詢。

如果需要更多的信息,請讓我知道,這樣我就可以使事情變得更加清晰。

SELECT tile, description 
FROM table_2 
INNER JOIN table_1 
ON table_2.userId = table_1.id 

SELECT link 
FROM table_3 
INNER JOIN table_2 
ON table_3.id = table_2.table_3Id 

SELECT groupName 
FROM table_4 
INNER JOIN table_2 
ON table_4.id = table_2.table_4Id 
+0

SO是一個很好的地方爲,所以我只希望更改標題爲「我如何可以結合這些連接?」。順便說一句,我認爲你的問題會更容易閱讀,如果你只包含表格定義而不是明文描述。 – AndreKR 2012-02-27 19:46:46

+0

@AndreKR看起來像一個mod改變了我的。我只是不想讓人們爲我做我的工作。這種感覺很髒。 – townie 2012-02-27 20:07:28

回答

1
SELECT tile, description, link, groupName 
FROM table_2 
JOIN table_1 ON table_2.userId = table_1.id 
JOIN table_3 ON table_3.id = table_2.table_3Id 
JOIN table_4 ON table_4.id = table_2.table_4Id 
+0

是否有我應該使用JOIN而不是INNER JOIN的原因?我會檢查你作爲答案,因爲你先回答了,但我想首先知道。 – townie 2012-02-27 20:10:09

+0

它更短。 ;)對於MySQL來說,它們都是相同的。 – AndreKR 2012-02-27 20:13:34

1

結合您查詢到一個查詢有多個連接。

事情是這樣的:

SELECT tile, description, link, groupName 
FROM table_2 
INNER JOIN table_1 
ON table_2.userId = table_1.id 
INNER JOIN table_2 
ON table_3.id = table_2.table_3Id  
INNER JOIN table_2 
ON table_4.id = table_2.table_4Id  
+0

每個INNER JOIN應該是table_1嗎? – townie 2012-02-27 20:16:16

+0

我不知道回覆的地方在哪裏,但是我原來並沒有注意到這是一個錯字。我只是把它固定在我的原版中。 – townie 2012-02-27 20:23:07

+0

我修復了我的答案以符合您更新的OP。 – 2012-02-27 20:25:03