Abfrage mit verschaltelten Bedingungen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage mit verschaltelten Bedingungen

    Hallo,

    ich möchte eine komplexe Abfrage machen und habe auch schon verschiedenes versucht. Ich bekomme aber nicht die richtigen Werte aus der Abfrage.

    Tabellen (vereinfacht):

    Bestellungen: rechnungsnr|versandkosten
    Bestellpositionen: rechnungsnr|artikelname|einzelpreis|menge

    Ich möchte die rechnungsnr aller Bestellungen wissen, wo
    - die Summe des gesamten Warenwerts einer Bestellung höher als 50 ist und die Versandkosten höher als 0 sind

    ODER

    - die Summe des gesamten Warenwerts einer Bestellung kleiner als 50 ist und die Versandkosten weniger als 1 oder größer als 5 sind.


    Mein Versuch:
    Code:
    SELECT DISTINCT bestellungen.rechnungsnr
    FROM bestellungen, bestellpositionen
    WHERE 
    
    
    
                  
                  bestellungen.rechnungsnr = bestellpositionen.rechnungsnr
                  AND 
                  (
                                  (
                                  50 <
                                  (
                                  SELECT sum( einzelpreis * menge )
                                  FROM bestellpositionen
                                  WHERE bestellungen.rechnungsnr = bestellpositionen.rechnungsnr 
                                 
                                  AND bestellungen.versandkosten >0
                             
                                  )
                                  )                                  
                  
                  
                  OR (
                              bestellungen.rechnungsnr = bestellpositionen.rechnungsnr
                              AND (
                                      50 >(
                                      SELECT sum( einzelpreis * menge )
                                      FROM bestellpositionen, bestellungen
                                      WHERE bestellungen.rechnungsnr = bestellpositionen.rechnungsnr 
                                      AND (
                                      (
                                      bestellungen.versandkosten <1
                                      )
                                      OR (
                                      bestellungen.versandkosten > 5
                                      )
                                      )
                                   
                              ))
                  )
    )




    Wo liegt der Fehler? Danke für eure Hilfe!

  • #2
    SUM() und MAX() sind deine Freunde!

    Kommentar


    • #3
      Code:
      SELECT b.rechnungsnr
      FROM bestellung b
          JOIN position p ON b.rechnungsnr = p.rechnungsnr
      GROUP BY p.rechnungsnr, p.artikelname 
          HAVING (SUM(p.menge * p.einzelpreis) > 50 AND b.versandkosten = 0) 
          OR (SUM(p.menge * p.einzelpreis) < 50 AND b.versandkosten < 1 OR b.versandkosten > 5)
      Meinst du so?

      Kommentar


      • #4
        Zitat von onemorenerd Beitrag anzeigen
        Code:
        SELECT b.rechnungsnr
        FROM bestellung b
            JOIN position p ON b.rechnungsnr = p.rechnungsnr
        GROUP BY p.rechnungsnr, p.artikelname 
            HAVING (SUM(p.menge * p.einzelpreis) > 50 AND b.versandkosten = 0) 
            OR (SUM(p.menge * p.einzelpreis) < 50 AND b.versandkosten < 1 OR b.versandkosten > 5)
        Meinst du so?

        Deine Antwort hat mir sehr weitergeholfen, vielen Dank!

        Kommentar

        Lädt...
        X