2011-05-26 127 views
1

我想返回所有即將在這些區域內,屬於一個macroregion的報告,從表中選擇多個值...MySQL的:基於從另一個表中的多個值

我想不知何故

SELECT DISTINCT report FROM reports WHERE region = 
(SELECT distinct region from macroregions where macroregion = 'Africa') 

在macroregion的地區是撒哈拉,西非,熱帶非洲,...等

雖然這是不可能的,因爲它的子查詢將返回多個結果。

+0

@RVWard這是如何與PHP相關? – yannis 2011-05-26 22:43:34

+0

我正在過濾報告以顯示給基於他們所在的洲的用戶。 – 2011-05-26 22:44:21

+0

@RVWard我從問題中刪除了php標籤,因爲用什麼語言來顯示結果與您實際詢問的內容無關。 – yannis 2011-05-26 22:52:16

回答

2
SELECT DISTINCT report FROM reports WHERE 
region IN 
(SELECT distinct region from macroregions where macroregion = 'Africa') 

也許你錯過了IN操作

+0

哇,工作。所以'IN'是繞過'爲子查詢返回多個結果'錯誤的訣竅? – 2011-05-26 22:46:41

+0

是的。還有其他的操作員也可以做其他的魔法(比如> ANY) – dynamic 2011-05-26 22:47:10

+0

Wooooha!你是一名奇蹟工作者! – 2011-05-26 22:48:35

2

這應該得到你所需要的:

SELECT 
    r.report 
FROM 
    reports r 
INNER JOIN 
    macroregions m ON 
     m.region = r.region 
     AND 
     m.macroregion = 'Africa'

這是所有的相關的相關聯的macroregion'非洲地區的報告。

+0

這工作得太好了:D – 2011-05-26 22:50:24

相關問題