表名 - 城市
列 -city_id,city_name
表 - 状态
列 -state_id,state_name
表名 - 类别
列名 - category_id,category_name
表名 - 新闻
列名称 - cat_id,state_id,city_id,标题,故事,作者等。
我不得不从城市,州和类别表中选择所有列,以便在新闻表中插入id....
为此,我创建了sql查询并连接了上述所有三个表,但这显示了错误..请帮帮我...
字段列表中的列"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;
您需要指定列的来源表。 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;
请注意,我引入了表别名。 这些有助于使查询更易于编写和读取。
原因是,您在状态和新闻表中都有state_id(对于city_id在城市和新闻表中相同)仅举几例,SQL引擎混淆了使用哪一个。因此,我建议您在选择字段中使用表别名或表名称作为前缀。