JOIN über mehrere Tabellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JOIN über mehrere Tabellen

    Hallo...
    vorab -> ja ich habe die suche bemüht, trotzdem konnte mir kein bestehendes thema wirklich weiterhelfen :(

    Ich habe 3 verschiedene Tabellen:

    Tabelle "pages"
    Felder: uid, pid, title

    Tabelle "artikel"
    Felder: pid, no

    Tabelle "preis"
    Felder: customerno, itemno

    Jede Seite hat mehrere Artikel. Jeder Artikel hat für jeden Kunden einen Preis.
    Ich bräuchte jetzt nur die Seiten (pages), welche für den aktuellen Kunden Artikel enthalten, aber nur Artikel die auch für den aktuellen Kunden Preise haben.

    Folgenden Befehl habe ich, funktioniert leider überhaupt nicht :(

    Quellcode

    1. SELECT DISTINCT pages.uid, pages.pid, pages.title
    2. FROM pages
    3. INNER JOIN artikel
    4. ON artikel.pid = pages.uid
    5. INNER JOIN preis
    6. ON preis.itemno = artikel.no
    7. WHERE preis.customerno='123456'


    Ich hoffe der ultimative SQL-Gott stolpert über dieses Thema und schreibt den Befehl in 10 Sekunden runter... Ich versuchs schon seit 2 Stunden :(
    greetz,
    seitz
  • Ich verstehe deine Fragestellung nicht ganz. Könntest du uns vielleicht ein Beispiel geben.
    Hast du dich schon mit LEFT JOIN und RIGHT JOIN auseinander gesetzt. Wenn ich es (teilweise) richtig verstanden habe, wirst du solch eine Verknüpfung brauchen und wirst nicht nur mit INNER JOIN zur Lösung gelangen.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Klingt eher so als ob alle Join Bedingungen einschränkend sind.
    Nur Pages mit Artikeln, nur Artikel mit Preisen, etc
    Bleib also beim INNER JOIN.

    Was stimmt denn an deiner Anfrage nicht. Hier mal mein Vorschlag

    Quellcode

    1. SELECT pages.*
    2. FROM pages
    3. INNER JOIN artikel
    4. ON artikel.pid = pages.uid
    5. INNER JOIN preis
    6. ON preis.itemno = artikel.no
    7. WHERE preis.customerno='123456'
    8. GROUP BY pages.pid
    9. HAVING COUNT(pages.pid) > 0


    Das hält sich wörtlich an deine Einschränkungen ;)
    Ansonsten formuliere mal konkreter.
  • hmm... ok.. vielen Dank erst mal!
    Dieser SQL Befehl funktioniert einwandfrei und meiner täte es auch, wenn ich nen GROUP BY dazu schreibe ;)

    also ich habs jetzt so:

    Quellcode

    1. SELECT DISTINCT pages.pid, pages.uid, pages.title
    2. FROM pages
    3. INNER JOIN artikel
    4. ON artikel.pid = pages.uid
    5. INNER JOIN preis
    6. ON preis.itemno = artikel.no
    7. WHERE preis.customerno='123456'
    8. GROUP BY pages.pid
    greetz,
    seitz