2013-07-08 27 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