2017-03-23 2 views
-1

Also ich versuche, alle Werte einschließlich Null zu wählen, und ich weiß, es gibt ein paar Threads zu diesem Thema, aber es funktioniert alles nicht für mich, oder ich weiß nicht, wie Sie es implementieren. Wie auch immer, ich muss den niedrigsten Preis aller Farben bekommen. Und wenn ich die Abfrage versuche, habe ich gerade jetzt. Es wird der niedrigste Preis aller Farben außer null. Aber ich möchte auch den niedrigsten Preis, wenn die Farbe Null ist. dies ist die Abfrage Ich habe jetzt:SQL Wie wählt man alle Werte einschließlich Null aus?

SELECT p.* 
FROM plant p 
inner JOIN (SELECT Color, min(price) minPrice 
      from plant 
      group by color           
     ) b on p.price = b.minPrice and 
       p.color= b.color 
order by plantcode; 

Wie die Abfrage zu beheben, die es alle Werte einschließlich Null wählt?

+0

Sie sollten versuchen, einen linken Outer-Join verwendet anstelle eines inneren join, sehen, ob das für Sie arbeitet. – Kevin

+1

Fügen Sie einige Beispieltabellendaten und das erwartete Ergebnis hinzu - auch formatierten Text. – jarlh

+0

Haben Sie die NVL-Funktion ausprobiert? https://www.w3schools.com/sql/sql_isnull.asp – Tim

Antwort

0

Edited Version von Cars10 Antwort:

SELECT p.* FROM plant p 
inner JOIN(SELECT Color, min(COALESCE(price,0)) minPrice 
      from plant group by color           
     ) b on COALESCE(p.price,0) = b.minPrice and 
       COALESCE(p.color,'NULL')= COALESCE(b.color,'NULL') order by plantcode; 
+0

Danke! das funktioniert! – Alegou20

1

Sie versuchen und COALESCE() verwenden könnte einen Wert von Null auf die Fälle zuweisen, wo ein null sonst zu finden ist:

SELECT p.* FROM plant p 
inner JOIN(SELECT Color, min(COALESCE(price,0)) minPrice 
      from plant group by color           
     ) b on COALESCE(p.price,0) = b.minPrice and 
       COALESCE(p.color,'NULL')= COALESCE(b.color,'NULL') order by plantcode; 

Dies ist nur eine „schnelle Schuss“: In den Ergebnissen Sie 0 s finden für die Spalte minPrice und null s für die Spalte price. Die COALESCE() Funktion macht sie "gleich".

+0

Es funktioniert nicht, es zeigt immer noch nicht die Nullfarbe – Alegou20

+0

Sie müssen die Koaleszenz für beide Join-Bedingungen verwenden. Wenn p.color und b.color null sind, setzen Sie sie auf einen Textwert wie 'NULL', der verbunden werden kann. Ich habe diese Antwort bearbeitet, aber sie wird möglicherweise noch nicht angezeigt (wartet auf einen Peer-Review). –

+0

@ Jeremy: Ja, danke für die Bearbeitung! Ich habe einfach das 'color'-Geschäft übersehen ;-) – cars10m

Verwandte Themen