2016-07-28 6 views
0

können sagen, dass ich die folgenden beiden Säulen hatten (Marke & Farbe) sind die Werte:Fenster Partition in Postgres mit einem varchar

brand color 
ford blue 
ford pink 
ford yellow 
chevy green 
chevy white 
chevy yellow 
jeep blue 
jeep green 

ich nur über die Marken kümmern, die eine rosa oder blauen Auto verkaufen. welche Art von Fensterfunktion würde mir erlauben, nur die drei 'Ford' Aufzeichnungen zurückzuziehen, weil Ford ein rosa/blaues Auto hat. Und der ZWEI Jeep zeichnet auf. (Ich will keine chevy Aufzeichnungen sehen). Dank

Antwort

1

Sie sollten mit dem Farbzustand eine eindeutige Abfrage auf die Marke Spalte tun. Sie erhalten die Liste der Marken, die für die Abfrage geeignet sind. dann verbinden Sie dieses Ergebnis mit der normalen Tabelle basierend auf der Marke. und dann die Aufzeichnung holen.

mit anderen Worten benötigen Sie eine Unterabfrage mit den verschiedenen Marken und die Bedingung, die zu Ihrem normalen Tisch Innen verbunden ist

so etwas wie

select t1.* 
from t1 
inner join (
    select distinct brand 
    from t1 
    where color in ('pink', 'blue') 
) as t2 on t2.brand = t1.brand 
0
SELECT * 
FROM t1 
WHERE brand in (
       SELECT brand 
       FROM t1 
       WHERE color in ('pink', 'blue') 
       ) 

diese Abfrage auf Englisch lesen: Alle wählen Aufzeichnungen von der Tabelle, wo Marke allen Marken mit Farbe rosa oder blau entspricht.