2016-01-13 105 views
1

我似乎無法做到這一點,無論我怎麼努力:所以基本上我有表的這個例子:從子查詢,SQL選擇行,解決

table: HOTEL 
HID NAME 
----------------------- 
H1  HILTON  
H2  MOUNTAIN INN 
H3  TROPICANA 


table: Renting 
ID  JMBG HID 
----------------------- 
1  J2  H1 
2  J2  H2 
3  J2  H3 
4  J1  H1 


table: Clijents 
JMBG NAME 
----------------------- 
J1  ALICE 
J2  JOHN 

從這裏,我應該發現所有已經出租給所有klients的酒店,或在這種情況下只是H1 這是我最好的嘗試,我沒有工作;(

SELECT HID FROM HOTEL H 
WHERE H.HID IN 
    (select HID, COUNT(DISTINCT ID) AS RENTED 
     FROM RENTINGS R 
     GROUP BY R.HID) 
    AND R.RENTED=(SELECT COUNT(*) FROM CLIJENTS) 
+0

嗨傑裏檢查我的答案爲您的上一個問題。 –

+0

BTW您的查詢示例看起來不對,首先您的表'R'不具有'RENTED'字段,並且您在該級別將'AND R.Rented'外部的子查詢放在只有'H'可見。使用http://poorsql.com檢查你的查詢格式,看看我的意思 –

回答

2
  • 您在需要count(distinct)案例一酒店多次租用同一客戶。

SELECT HID 
FROM Renting 
GROUP BY HID 
HAVING COUNT (DISTINCT JMBG) = (SELECT COUNT(*) FROM CLIJENTS) 
+0

你非常擅長這一點。 :) –