2016-04-03 139 views
-1

我需要選擇一個屬性擁有者,擁有最多數量的未被潛在買家查看的屬性。選擇最大空值

什麼是最好的方式來選擇「propertyforrent.ownerno」,其中'propertyno IS NULL'的數量是最高的。

這:

SELECT PropertyForRent.ownerno 
FROM PropertyForRent propertyforrent, Client client, Viewing viewing 
WHERE client.preftype=propertyforrent.type 
AND client.clientno=viewing.clientno 
AND viewing.propertyno IS NULL 
ORDER BY count(*) 
LIMIT 1 

或本:

SELECT PropertyForRent.ownerno 
FROM PropertyForRent propertyforrent, Client client, Viewing viewing 
WHERE client.preftype=propertyforrent.type 
AND client.clientno=viewing.clientno 
AND MAX(COUNT(viewing.propertyno IS NULL) 

謝謝!

+0

請沒有在SQL'NULL'有特殊待遇。 NULL值不等於任何值,包括另一個NULL值。你需要在你的查詢中使用'IS NULL'。 –

+0

含義而不是說'='NULL''我不得不說'IS NULL'吧? – am340

+0

是的。你說對了。順便說一句,還有'不是空'。 –

回答

1

我們在這裏使用LEFT JOINs,以便返回所有屬性 並且只有那些與相關的查看。

SELECT PFR.ownerno, count(Distinct PFR.PropertyNo) Count_of_Unviewed_Properties 
FROM PropertyForRent PFR 
LEFT JOIN viewing V 
on PFR.PropertyNo = V.PropertyNo 
WHERE V.propertyno IS NULL 
ORDER BY count(Distinct PFR.PropertyNo) Desc 
LIMIT 1 

然後我們得到了鮮明的PFR.PropertyNo的計數那裏沒有一個相關的觀察,以便通過這種計數遞減和限制1個結果是(除非有關係)將與主人大多數屬性沒有查看。由

假設:

  • 無需客戶都在這裏......你有興趣收看和屬性。
  • PropertyForRent有財產編號
  • PropertyForRent.PropertyNo是該表上的PK。併爲給定的所有者確定一個獨特的財產。
  • Viewing.propertyNo是一個FK到PropertyforRent.PropertyNo
  • 你不關心 「紐帶」
+0

right .... viewing has propertyno on it – am340

+0

這很有道理....下面的評論也是準確的,所以我認爲你已經回答了我的問題。非常感謝。無論如何要給你「道具」或任何東西在這裏?我點擊答案旁邊的複選標記。 – am340

+0

Viewing.propertno和viewing.clientno都標註爲PK PFR。propertyno也被標記爲PK – am340