2013-03-11 98 views
0

想象一下,我有这张表,项目,大洲和国家。项目可以在很多国家,而在另一个专栏中,每个国家都有一个代表其大陆的数字。加入同一列的两个查询,选择同一列

我想进行一个查询,为每个填充了国家的大洲返回一列。但同时我不希望它归还那些不属于大陆的项目。

这将是更少加入这个3个查询:

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); 

我已成功地加入最后一个与其他两个中的一个,但我不能设法加入他们三个,它总是返回国家的混合在同一列中,而不是不同的...

预先感谢您

+1

你可以给样品记录以期望的结果吗? – 2013-03-11 08:02:25

回答

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) 
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); 

这不正是每个洲一列,但在我看来,数据的显示,必须在表示层上进行反正不是在数据库级别。