[Code] MySQL JOINS "Kunde kauft Produkt"

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von frankred, 30. April 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 30. April 2009
    MySQL JOINS "Kunde kauft Produkt"

    Hi Leute müssen fürs Wochenende circa 20. SQL Statements erstellen. Es handelt sich um ein sehr großes Datenbankmodell, hier ein Ausschnitt:

    {bild down}

    Hier meine Frage bei der ich hänge.

    18. Geben Sie alle Produkte aus, die von Kunden aus Berlin gekauft wurden (Kundenvor- und Kundennachname soll auch angezeigt werden).


    Im Prinzip muss ich da ein verschachteltes Inner Join verwenden. Leider habe ich nichts gescheits im Netz gefunden zum Thema verschachtelte SQL Abfragen.

    Fänd ich echt rießig wenn mir jemand helfen könnte, weiß nicht so ganz weiter
     
  2. 30. April 2009
    AW: MySQL JOINS "Kunde kauft Produkt"

    Code:
    SELECT K.KundenName, K.KundenVorname, P.ProduktBez
    FROM produkt P
     INNER JOIN kauft B
     ON B.produktNr = P.produktNr
     INNER JOIN kunden K
     ON K.kundenNr = B.kundenNr
     AND K.ort = 'Berlin'
    
    dürfte in etwa so aussehen (nicht getestet)

    Edit Huch "ON" und "AND" vergessen ^^
     
  3. 30. April 2009
    AW: MySQL JOINS "Kunde kauft Produkt"

    Code:
    SELECT K.kundenName, K.kundenVorname, P.produktBez
    FROM produkt AS P
     INNER JOIN kauft AS B
     ON B.produktNr = P.produktNr
     INNER JOIN kunden AS K
     ON K.kundenNr = B.kundenNr
    WHERE K.ort like 'Berlin';
    Denke eher so.
     
  4. 30. April 2009
    AW: MySQL JOINS "Kunde kauft Produkt"

    Code:
    SELECT K.KundenName, K.KundenVorname, P.ProduktBez
    FROM produkt P
     INNER JOIN kauft B
     ON B.produktNr = P.produktNr
     INNER JOIN kunden K
     ON K.kundenNr = B.kundenNr
     AND K.ort = 'Berlin'
    
    Anstatt von INNER JOIN kannst du auch LEFT JOIN benutzen, da man dadurch auch Datensätze sehen kann, die wo keinen übereinstimmenden Wert finden,
    d.h. z.B. wenn in B.produktNr etwas eingetragen is aber in P.produktNr nicht, dann wird dir trotzdem der Datensatz angezeigt, bei INNER JOIN nicht (da müssen die Datensätze 100% übereinstimmen, was du dort abfragst), ich weiß aber halt nicht ob deine Datensätze 100% übereinstimmen oder ob du nur INNER JOIN benutzen darfst.
    Aber nur ein Tipp, falls du später mal die Probleme hast, und die Datensätze vll. nicht angezeigt werden.

    Hier das Beispiel dazu
    Code:
    SELECT K.KundenName, K.KundenVorname, P.ProduktBez
    FROM produkt P
    LEFT JOIN kauft B ON 
     B.produktNr = P.produktNr
    LEFT JOIN kunden K ON 
     K.kundenNr = B.kundenNr AND 
     K.ort = 'Berlin'
    

    mfg whenyou

    edit:

    Bei Like würde ich noch Wildcards mithinzusetzen
    Code:
    WHERE K.ort like '%Berlin%';
    
    so finds ich prinzipiell schöner.
     
  5. 30. April 2009
    AW: MySQL JOINS "Kunde kauft Produkt"

    Führt genau zum selben Ergebnis wie das erste Statement (INNER JOIN)


    @ whenyoudie
    Wenn du dein Statement so lässt mit den left joins, dann krigst alle produkte, egal ob gekauft, nicht gekauft und von welchem Kunden gekauft ... is in dem zusammenhang ja sinnlos,
     
  6. 30. April 2009
    AW: MySQL JOINS "Kunde kauft Produkt"

    Ja wie gesagt, wenn die Datentypen nicht 100% übereinstimmen Funktioniert es nicht, ich hatte dass Problem nämlich schonmal, und daher hab ich es hier gleich mal mit dazugeschrieben bevor bei ihm dass Problem auftritt und er es nicht lösen kann
     
  7. 30. April 2009
    AW: MySQL JOINS "Kunde kauft Produkt"

    Danke leute BW ist drauß

    habe mich für diese lösung entschienden.

     
  8. 30. April 2009
    AW: MySQL JOINS "Kunde kauft Produkt"

    ~closed~
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.