Frage

Noob-Typ Frage:

Sagen, ich habe zwei Tabellen, Bonbons und Farben.Die Farben Tabelle enthält nur " code/Wert-Paare wie 01 blau, 02 blau, 03-grün, usw.und wird in der Süßigkeiten Tabelle von code.

Wie kann ich eine Abfrage der in den Süßigkeiten-Tisch für alle blauen Bonbons ohne eine explizite join?Seit zwei Jahren nun habe ich das schreiben von Abfragen mit joins, wie:

WÄHLEN Sie * AUS Süßigkeiten JOIN Farben o ON(ein.color_code = o.color_code)
WO o.color_value = 'blue';

Ich bin mir sicher, jedes mal, ich bringe ein Gewehr, ein Messer zu kämpfen, aber mein googeln hat zu keinem Ergebnis.

Vielen Dank.

War es hilfreich?

Lösung

"Ich bin mir jedes Mal sicher, dass ich eine Waffe in einen Messerkampf bringe, aber mein Googeln war fruchtlos." Was bringt dich dazu, das zu denken? RDBMSS sind so konstruiert, dass sie sich anschließen können

Wenn Ihr Ziel es ist, Sie SQL lesbarer zu machen, bevorzugen Sie möglicherweise die ''Verwendung' Syntax:

SELECT * FROM candies JOIN colors USING(color_code) WHERE color_value = 'blue';

Alternativ können Sie in Ihrer Abfrage, wie Sie in Ihrer Abfrage hart codieren, den Code stattdessen in Betracht ziehen:

SELECT * FROM candies WHERE color_code = '02';

Dies wird jedoch die Lesbarkeit verringern, wenn die Codes in Ihrem realen Szenario nicht beschreibend sind (z. B. "Blu" für Blau).

Andere Tipps

Sie können es schreiben als:

select
  ca.*
from
  candies ca
where
  ca.color_code = (
    select co.color_code
    from colors co
    where co.color_value = 'blue'
  )

aber es sollte kein Unterschied.Tatsächlich ist die join-Ansatz ist ein bisschen robuster.

Was mehr ist - Sie sollten loszuwerden, die Farben Tisch, und mit nur color_values anstelle von codes.Es ist eigentlich mehr effiziente.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top