2016-04-03 6 views
-1

Мне нужно выбрать владельца недвижимости, которому принадлежит наибольшее количество свойств, которые не были просмотрены потенциальными покупателями.select max null values ​​

Каков наилучший способ выбора свойства 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

Да. Ты понял. Кстати, есть также 'IS NOT NULL'. –

ответ

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 

Тогда мы получим подсчет Distinct PFR.PropertyNo где не связанный просмотр, заказ по этому количеству и по алфавиту предела до 1 результата, который (если нет связи) будет являться собственником с большинство свойств без просмотров.

Предположение, сделанное:

  • Нет необходимости для клиентов вообще здесь ... вы заинтересованы в просмотрах и свойствах.
  • PropertyForRent имеет PropertyNo
  • PropertyForRent.PropertyNo - это ПК на этом столе. и идентифицирует уникальное свойство для данного владельца.
  • Viewing.propertyNo является FK для PropertyforRent.PropertyNo
  • вы не обеспокоены «связей»
+0

прав .... просмотр имеет свойствоno на нем – am340

+0

Это имеет смысл ... ваш комментарий ниже также является точным, поэтому я думаю, что вы ответили на мой вопрос. Большое спасибо. Есть ли в любом случае, чтобы дать вам «реквизит» или что-то еще здесь? Я нажал галочку рядом с вашим ответом. – am340

+0

View.propertno и view.clientno обозначены как PK PFR.propertyno также обозначается PK – am340