2016-04-03 18 views
-1

Ich muss einen Eigentümer auswählen, der die meisten Eigenschaften besitzt, die von potenziellen Käufern nicht angezeigt wurden.Wählen Sie maximale Nullwerte

Was ist der beste Weg, um 'propertyforrent.ownerno' auszuwählen, wo die Anzahl der 'propertyforrent.ownerno' die höchste ist.

THIS:

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 

ODER DIESE:

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) 

DANK !!

+0

Bitte nicht, dass in SQL PropertyforRent.PropertyNo 'hat NULL' besondere Behandlung. 'NULL' ist ** nicht ** gleich einem Wert, einschließlich eines anderen' NULL'. Sie müssen 'IS NULL' in Ihren Abfragen verwenden. –

+0

Bedeutung statt zu sagen '=' NULL '' Ich muss 'IS NULL' richtig sagen? – am340

+0

Ja. Du hast es. Übrigens gibt es auch 'IS NOT NULL'. –

Antwort

1

Wir verwenden LINKE VERBINDUNGEN hier, so dass alle Eigenschaften für Miete zurückgegeben werden und nur diejenigen mit einem verwandten Viewing.

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 

Dann erhalten wir eine Zählung der Distinct PFR.PropertyNo, wo es keine verbundene Anzeige, um von dieser Zählung ab und Grenze zu 1 Ergebnis ist die (es sei denn, es Bindungen) wird der Eigentümer sein mit der die meisten Eigenschaften ohne Viewings.

Annahmen gemacht:

  • Keine Notwendigkeit für die Kunden überhaupt hier ... sind Sie in Viewings und Eigenschaften interessiert.
  • PropertyForRent hat PropertyNo
  • PropertyForRent.PropertyNo ist die PK auf dieser Tabelle. und identifiziert eine eindeutige Eigenschaft für einen bestimmten Besitzer.
  • Viewing.propertyNo ein FK ist
  • Sie nicht besorgt sind über "Krawatte"
+0

right .... viewing hat proprietaryno auf es – am340

+0

Das macht Sinn .... Ihr Kommentar unten ist auch genau, so denke ich, dass Sie meine Frage beantwortet haben. Danke vielmals. Gibt es da überhaupt noch "Requisiten" oder irgendwas hier? Ich habe das Häkchen neben Ihrer Antwort angeklickt. – am340

+0

Viewing.propertno und viewing.clientno sind beide mit PK PFR gekennzeichnet.propertyno ist auch mit PK – am340