我有三张桌子:国家,新闻和关系表country_news。一个国家有许多新闻和新闻可以来自许多国家。我想从一个国家查一查,以提取所有相关新闻,这很容易:
SELECT news.* FROM country, news, country_news
WHERE country.id = 1
AND country_news.country_id = country.id
AND country_news.news_id = news.id
但现在我想提取与所发现的新闻相关的国家。我没有尝试过多次选择,因为我想尽可能避免它。我尝试了join和group_concat,但我无法让它工作。这在一个查询中是否可行?
答案 0 :(得分:3)
试试这个 -
SELECT n.*, c2.* FROM country c
JOIN country_news cn
ON cn.country_id = c.id
JOIN news n
ON cn.news_id = n.id
LEFT JOIN country_news cn2
ON cn2.news_id = n.id
LEFT JOIN country c2
ON cn2.country_id = c2.id
WHERE c.id = 1
答案 1 :(得分:0)
Select country.id from country c right Join
country_news cn on c.id=cn.country_id
where cn.news_id = @newsid
应该为您提供特定新闻的所有国家/地区ID
答案 2 :(得分:0)
您也应该选择特定国家/地区的列。
SELECT country.name as country_name, news.* FROM country, news, country_news WHERE country.id = 1 AND country_news.country_id = country.id AND country_news.news_id = news.id;