0

想象一下,我有这张表,上面有项目、大洲和国家。项目可以在许多国家/地区,在另一列中,每个国家/地区都有一个代表其大陆的数字。

我想做一个查询,为每个大陆返回一列,其中填满了它的国家。但同时我不希望它返回不在大陆的项目。

加入这三个查询会更少:

SELECT PROJECTS,COUNTRIES AS `EUROPE` FROM WORLD WHERE COUNTRIES = 2;

SELECT PROJECTS,COUNTRIES AS `AFRICA` FROM WORLD WHERE COUNTRIES = 3;

SELECT PROJECTS  FROM WORLD WHERE PROJECTS NOT IN (SELECT PROJECTS FROM WORLD WHERE COUNTRIES = 1);

我已经设法将最后一个与其他两个中的一个加入,但我无法加入其中三个,它总是返回同一列中的国家组合而不是不同的国家......

先感谢您

4

2 回答 2

1

根据您提供的信息,这是我能提供的最佳答案:

SELECT PROJECT, COUNTRIES AS 'EUROPE' FROM WORLD t1
JOIN
SELECT PROJECTS,COUNTRIES AS `AFRICA` FROM WORLD t2
WHERE PROJECT NUMBER t1 = (SELECT PROJECTS FROM WORLD WHERE COUNTRIES = 1)
于 2013-03-11T08:18:35.540 回答
0

这个怎么样:

SELECT 
PROJECTS, 
CASE COUNTRIES 
     WHEN 2 THEN 'Europe'
     WHEN 3 THEN 'Africa'
     ELSE 'elsewhere'
END AS Continent
WHERE COUNTRIES IN (2, 3)
AND PROJECTS NOT IN (SELECT PROJECTS FROM WORLD WHERE COUNTRIES = 1);

它不完全是每个大陆的一列,但在我看来,数据的显示无论如何都必须在表示层上完成,而不是在数据库级别上。

于 2013-03-11T10:09:10.553 回答