Announcement

Collapse
No announcement yet.

Verschachtelte Abfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Verschachtelte Abfrage

    Hallo,
    dreh mich irgendwie im Kreis und hoffe jemand kann mir helfen. Stehe vor folgendem Problem:

    Habe zwei Tabellen die vom Prinzip her wie folgt aufgebaut sind:

    Tabelle 1:

    ID_NR | Bezeichnung | PREIS
    ____________________________________
    1 | MERCEDES | 50.000
    2 | BMW | 35.000
    1 | MERCEDES | 38.000
    3 | FERRARI | 72.000
    4 | VW | 20.000
    4 | VW | 30.000

    Tabelle 2:

    ID_NR | MIND_PREIS
    ___________________
    1 | 40.000
    4 | 25.000

    Nun benötigeich eine Abfrage welche mir alle Einträge aus Tabelle 1 liefert welche

    a) gar nicht in Tablle 2 enthalten sind und
    b) wenn sie in Tabelle 2 enthalten sind, der Preis > dem MIND_PREIS ist

    Das Ergebnis sollt folglich so aussehen:

    ID_NR | Bezeichnung | PREIS
    ____________________________________
    1 | MERCEDES | 50.000
    2 | BMW | 35.000
    3 | FERRARI | 72.000
    4 | VW | 30.000


    Vielen Dank für Eure Hilfe!!!

  • #2
    select * from tabelle_1 where not exists (select 1 from tabelle_2 where tabelle_2.id_nr = tabelle_1.id_nr) or tabelle_1.preis >= (select tabelle_2.preis from tabelle_2 where tabelle_2.id_nr = tabelle_1.id_nr)

    oder auch probieren:

    select * from tabelle_1 where tabelle_1.preis >= IsNull((select tabelle_2.preis from tabelle_2 where tabelle_2.id_nr = tabelle_1.id_nr),0)

    bye,
    Helmut

    Comment


    • #3
      Funktioniert perfekt!

      Vielen Dank Helmut!

      Comment


      • #4
        Ginge das nicht auch über einen LEFT OUTER JOIN?

        So in etwa:

        [highlight=sql]
        SELECT t1.ID_NR, t1.BEZEICHNUNG, t1.PREIS
        FROM Tabelle1 t1
        LEFT OUTER JOIN Tabelle2 t2 ON t2.ID_NR = t1.ID_NR
        WHERE t1.PREIS > ISNULL(t2.MIND_PREIS, 999999999)
        [/highlight]

        OK ich geb zu das mit 999999999 ist nicht sehr schick. Hab ich am Anfang auch nicht direkt dran gedacht. Kommt auf den Anwendungsfall an

        Comment

        Working...
        X