2015-03-30 79 views
0

表a和表B的兩個條件,表中的具有兩個場,場1和2,和表B有兩個字段,字段3和4需要一個查詢,將滿足從兩個表

where 
    tablea.field1 >= 4 and tableb.field3 = 'male' 

是一樣的東西可能上面的查詢,香港專業教育學院嘗試這樣的事情在我的數據庫雖然不是錯誤,我得到的結果,它會檢查是否兩者分別是正確的。

即時通訊將嘗試進行升技清楚,不能給出查詢完全不亞於我想(大學的原因)。所以不好解釋,表1有幾列信息其中之一是孩子的數量,表二有更多關於孩子的信息,比如性別。

因此Im具有麻煩創建查詢,其中第一它會檢查父有2個孩子,但兩個公孩子,從而創建父表和孩子表之間的關係。

CREATE TABLE parent 
(pID NUMBER, 
numberkids INTEGER) 

CREATE TABLE kids 
(kID NUMBER, 
father NUMBER, 
mother NUMBER, 
gender VARCHAR(7)) 

select 
    p.pid 
from 
    kids k 
    inner join parent pm on pm.pid = k.mother 
    inner join parent pf on pf.pid = k.father, 
    parent p 
where 
    p.numberkids >= 2 and k.gender = 'male' 
/

此查詢檢查父有2個孩子以上的孩子的性別是男的,但我需要它來檢查的家長是否有2個孩子,這些孩子是有2個以上的男性的孩子(或總之檢查父母是否有2個或更多男性孩子)。

對於冗長的解釋,我修改了表格和來自實際要使用的查詢(所以一些錯誤可能在那裏,但原始查詢工作,而不是我想如何解釋上面)。任何幫助將不勝感激。

+0

你是不是應該有一個等號「=」,在結束了嗎? 'k.gender ='male''?此外,「INNER JOIN」與「JOIN」相同。 – 2015-03-30 20:07:56

+0

寫錯了。 – 2015-03-30 20:08:43

回答

0

最好的辦法是從parent表中取出numberKids列......你會發現它很難維護。

無論如何,這樣的事情可能做的伎倆:

SELECT p.pID 
    FROM parent p INNER JOIN kids k 
    ON p.pID IN (k.father, k.mother) 
WHERE k.gender = 'male' 
GROUP BY p.pID 
HAVING COUNT(*) >= 2; 
+0

不是一個單組基函數錯誤。 – 2015-04-04 14:14:20

+0

沒關係固定的問題,由於該查詢添加組發生 – 2015-04-04 14:22:46

+0

對不起,這個...觸發器一定是太快了。 – 2015-04-04 14:56:44