2017-02-22 8 views
0

Wie kann ich das funktionieren lassen? Ich habe eine Tabelle u_uzivatele und ich möchte es in Tabelle b_objednavky beitreten, aber ich möchte auch nicht, dass Zeilen aus der Tabelle u_uzivatele verbunden werden, die mit der Tabelle bw_paid_orders verknüpft werden können und nicht WHERE entsprechen. Im Augenblick gibt die SELECT-Anweisung eine Tabelle mit Zeilen aus der Tabelle uzivatele zurück, die ebenfalls in der Tabelle bw_paid_orders enthalten sind und die Kriterien für die WHERE-Klausel erfüllen. Aber ich kann nicht auf Tabelle u_uzivatele beitreten, da mehrere Zeilen zurückgegeben werden.Join-Tabelle für SELECT-Anweisung

SELECT STMT 

FROM b_objednavky INNER JOIN u_uzivatele ON b_objednavky.uzivatel = 
( 
     SELECT u_uzivatele.id 
     FROM u_uzivatele 
     JOIN bw_paid_orders 
     ON  u_uzivatele.id = bw_paid_orders.user_id 
     WHERE bw_paid_orders.active_thru < now() + interval '6 months') uzivatele 
+2

'wählen ... aus Join-Tabelle (subquery) auf ...' – jarlh

+0

wo soll ich die select verwenden, die Sie vorschlagen? .. Grundsätzlich möchte ich Tabelle auf subquery beitreten – jemcaj

+0

unter a_horse_with_no_name Antwort zu finden. – jarlh

Antwort

2

Sie wollen nur u_uzivatele Aufzeichnungen verbinden, für die nicht einen bestimmten Eintrag in bw_paid_orders existiert. Verwenden Sie also NOT EXISTS oder den einfacheren NOT IN.

select ... 
from b_objednavky o 
join u_uzivatele u on u.id = o.uzivatel 
        and u.id not in (select user_id from bw_paid_orders po 
            where active_thru < now() + interval '6 months') 
+0

Das sieht tatsächlich so aus als wäre es das was ich brauche. Aber insgesamt funktioniert es immer noch nicht, ich muss überprüfen, ob das etwas anderes zurückgibt, als ich es möchte – jemcaj

Verwandte Themen