2013-07-08 78 views
0

MySql的選擇數據這是我當前的查詢:從多個表

SELECT * FROM images T 
JOIN boxes_items T2 
ON T.ITEM_ID = T2.ITEM_PARENT_ID 
WHERE T2.ITEM_ID = '$image_id' 

我還需要從表中選擇所有在box_id從boxes_items取名叫「盒子」。
如何將此添加到查詢中?

+0

您的描述不夠清晰,不能告訴你是否需要一個UNION或其他JOIN。你能添加樣本數據和期望的結果嗎? – Barmar

+0

@Barmar我想我需要另一個加入 - 我需要從另一個名爲「盒子」的表中選擇全部box_id = box_id從「boxes_items」收集哪裏T2.ITEM_ID ='$ image_id' – bushdiver

回答

2

試試這個

SELECT T.* , T2.* , T3.* FROM images T 
    JOIN boxes_items T2 ON T.ITEM_ID = T2.ITEM_PARENT_ID 
    JOIN boxes T3 ON T3.box_id = t2.box_id 
    WHERE T2.ITEM_ID = '$image_id' 
+0

這和原始查詢?桌子在哪裏? – Barmar

+0

'boxes_items'!='箱子' – Barmar

+0

啊對不起,我會更新它:) –

2
SELECT * 
FROM images T 
JOIN boxes_items T2 ON T.ITEM_ID = T2.ITEM_PARENT_ID 
JOIN boxes AS b ON b.box_id = t2.box_id 
WHERE T2.ITEM_ID = '$image_id' 
1

你真的不應該使用*,它可以讓你陷入更多的麻煩比它的價值。特別是因爲你的查詢中有多個表。

總之:

Select T.*, T2.*, T3.* 
from images T 
join boxes_items T2 on T.ITEM_ID = T2.ITEM_PARENT_ID 
join boxes T3 on T3.box_id = T2.box_id 
WHERE T2.ITEM_ID = '$image_id' 
+0

我認爲這樣做,但我怎麼在分配變量時區分行嗎?使用:$ result = mysql_query($ query); while($ row = mysql_fetch_array($ result)){} – bushdiver

+0

@bushdiver:您可以使用行的索引來區分行。通常這個索引是基於零的,這意味着第一行有索引0,第二索引1等。 – waka