表格名称 - 城市
列 -city_id,city_name
表格 - 州
列 -state_id,state_name
表名 - 类别
列名 - category_id,category_name
表格名称 - 新闻
列名称 - cat_id,state_id,city_id,标题,故事,作者等。
我想从城市,州和类别表中选择所有列,以便在新闻表中插入ID ....
为此我创建了sql查询并加入了以上三个表,但这显示错误..plz帮助我......
字段列表中的列'state_id'不明确
字段列表中的列'city_id'不明确
字段列表中的列'category_id'不明确
我需要从城市,州和类别表中返回所有列
SELECT city_name,city_id,state_id,category_id,state_name,category_name,headline,author,story,source,photo,date from news left join
city on news.city_id=city.city_id left join state on news.state_id=state.state_id left join category on news.cat_id=category.category_id;
答案 0 :(得分:1)
您需要指定列来自的表。 city_id
列表中的select
含糊不清。我认为这是正确的别名:
SELECT c.city_name, c.city_id, s.state_id, ca.category_id, s.state_name, ca.category_name,
n.headline, n.author, n.story, n.source, n.photo, n.date
from news n left join
city c
on n.city_id= c.city_id left join
state s
on n.state_id = s.state_id left join
category ca
on n.cat_id = ca.category_id;
请注意,我引入了表别名。这些有助于使查询更容易编写和阅读。
答案 1 :(得分:0)
同样的原因是,你在状态和新闻表中都有state_id(对于city和news表中的city_id也是如此),名称很少,而且SQL引擎混淆了哪一个使用。因此,我建议您在选择字段中使用表别名或表名作为前缀。