2012-05-30 47 views
0

我有一个查询的Sql加盟查询

SELECT foodjoint_id FROM provider_food_joints WHERE foodjoint_name='".$foodjoint_name."'"; 

现在我已经从其中还有一个foodjoint_id申请

SELECT * from menu_item where foodjoint_id = THOSE ID 

另一个表中选择的所有信息我也来加入这两个查询

+0

那么,你的问题是什么? – Arkh

+1

另外,您应该使用参数化查询而不是连接查询字符串中的变量。 – Arkh

回答

1

可以使用IN子句中的条件:

SELECT * from menu_item where foodjoint_id IN (
    SELECT foodjoint_id FROM provider_food_joints WHERE foodjoint_name='".$foodjoint_name."'"); 
2
SELECT i.menu_item 
FROM menu_item i 
JOIN provided_food_joints pfj 
ON (pfj.id = i.foodjoin_id) 
WHERE i.foodjoin_id = 5 

这基本上是一个联接声明的工作原理。 查看this tutorial了解更多关于不同种类连接的信息

在你的情况下 - 如nadirs-JOIN所建议的那样会更有用。

+0

我认为他的意思是加入两个查询,而不是编写连接两个表的查询 –

+1

因为他使用'foodjoin_id'并请求'menu_item表中的所有信息。所以我相信加入会更有用 – Tikkes

+1

你可以在你的回答中加入这个,就像在这种情况下说JOIN比嵌套查询更有用 –

1

试试这个

SELECT * from menu_item where foodjoint_id in(SELECT foodjoint_id FROM provider_food_joints WHERE foodjoint_name='".$foodjoint_name."'") 
0
SELECT * FROM menu_item WHERE foodjoint_id = (SELECT foodjoint_id FROM provider_food_joints WHERE foodjoint_name='".$foodjoint_name."'"); 

希望这是你的问?或具体的问题