2014-12-13 64 views
0

表名 - 城市加入SQL查询出栏ambigios错误

-city_id,CITY_NAME

- 状态

-state_id,STATE_NAME

表名 - 类

列名 - CATEGORY_ID,CATEGORY_NAME

表名 - 新闻

列名 - CAT_ID,STATE_ID,city_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; 

回答

1

返回所有列,您需要指定的列来自表。 city_idselect列表中不明确。我认为这是正确的别名:

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; 

请注意,我引入了表别名。这些帮助使查询更容易编写和阅读。

+0

'字段列表'中的未知列'c.city_name',然后也是'on子句'中的未知列'c.city_id',对于类别和状态以及所有 – 2014-12-13 12:32:23

0

同样的原因是,state_id和state_id都在state和news表中(对City_id和City表中的city_id一样)以及很少的名字,SQL引擎会混淆使用哪一个。因此,我建议你在选择字段中使用表别名或表名作为前缀。