where子句不明确

时间:2013-11-07 12:52:46

标签: mysql sql

当我尝试从多个表中选择数据时,我遇到了一个问题,我想知道是否有人可以帮助我。这些表是链接的,我只想选择具有特定ID的内容。我已经成功查询了1个表,但有2个表,它以我的方式引发了错误:

  

查询从配方中获取数据失败:where子句中的列Recipe_ID不明确。

这是我的问题:

$query="SELECT * FROM Recipe, Ingredients_Needed WHERE Recipe_ID ='$chosen_id'";

4 个答案:

答案 0 :(得分:6)

Recipe_ID是否同时出现在Recipe和Ingredients_Needed中? 如果它确实那么你需要做这样的事情:

SELECT * FROM Recipe, Ingredients_Needed WHERE Recipe.Recipe_ID = ....

作为旁注,使用正确的连接语法而不是隐式连接,即:

SELECT r.*, n.*
FROM Recipe r 
INNER JOIN Ingredients_Needed n ON n.Recipe_ID = r.Recipe_ID
WHERE r.Recipe_ID = ...

这将使其更加清晰,特别是如果您要加入具有不同条件等的多个表,因为您只需通过查看查询而不是猜测就可以快速查看别名表。

答案 1 :(得分:0)

指定表格:

WHERE table.Recipe_ID=

答案 2 :(得分:0)

指定哪些表食谱参考:配方和/或需要的成分

答案 3 :(得分:0)

只需用别名命名表并指定关系。您可能在两个表或表Ingredients_NeededRecipe_ID中具有相同的列名称,具有多个相同的条目。所以你的SQL将是:

SELECT * FROM Recipe R 
LEFT JOIN Ingredients_Needed I on R.ID=I.Recipe_ID 
WHERE R.ID = '$choden_id'

如果您在表Recipe中没有ID但是Recipe_ID,则只需更改R.ID的{​​{1}}