Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: SQL Frage - Kreuztabelle - zwei Queries in einem

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    SQL Frage - Kreuztabelle - zwei Queries in einem
    am: 10. Februar 2016, 16:05:28
    Ich habe da ein Problem mit einer SQL Abfrage ....

    Vereinfacht so:
    Tabellen
    products (products_id, weitere)
    autors_to_products (products_id, autors_id)
    autors (autors_id, weitere)

    Ich habe einen Query, der mir für einen bestimmten Autor alle Bücher liefert:

    Code: SQL  [Auswählen]
    SELECT p.*,a.* FROM products p
    LEFT JOIN autors_to_products ap ON p.products_id=ap.products_id
    LEFT JOIN autors a ON ap.products_id=a.products_id
    WHERE a.autors_id = 17

    Wie bekommt man jetzt hin, dass zu jeder damit gefundenen p.products_id über die Tabelle autors_to_products die tabelle autors nochmal alle a.autors_id ausspuckt die in der autors_to_products für diese p.products_id eingetragen sind  :-?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=34336.0
    Shop Hosting

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: SQL Frage - Kreuztabelle - zwei Queries in einem
    Antwort #1 am: 10. Februar 2016, 17:38:19
    So ganz habe ich dein Problem nicht verstanden, aber wenn du was aus der Tabelle autors_to_products als Ergebnis haben willst, musst du diese auch im Select berücksichtigen.

    Code: SQL  [Auswählen]
    SELECT p.*,a.*, ap.* FROM ...

    Gruss Gerhard

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: SQL Frage - Kreuztabelle - zwei Queries in einem
    Antwort #2 am: 10. Februar 2016, 17:51:23
    OK, dann mal in Wort und Bild

    Schritt 1
    Ich suche alle Bücher eines Autors.

    Schritt 2
    Ich suche zu diesen Büchern alle Autoren die an diesen Büchern beteiligt waren.

    Wenn ich in der WHERE clause die products_id nehme, bekomme ich zu einem Buch eventuell mehrere Zeilen, was ich über GROUP_CONCAT dann wieder zu einer Zeile verbasteln kann:
    [ Für Gäste sind keine Dateianhänge sichtbar ]
    Wenn ich in der WHERE clause die autors_id nehme, bekomme ich immer nur eine Zeile ....
    Da passiert dann das:
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: SQL Frage - Kreuztabelle - zwei Queries in einem
    Antwort #3 am: 10. Februar 2016, 17:59:37
    du kannst einfach noch einen JOIN auf die Tabelle machen

    Gruss Gerhard

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: SQL Frage - Kreuztabelle - zwei Queries in einem
    Antwort #4 am: 10. Februar 2016, 18:03:30
    Habe ich versucht .... gleiches Ergebnis. Irgendwas verstehe ich nicht.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: SQL Frage - Kreuztabelle - zwei Queries in einem
    Antwort #5 am: 10. Februar 2016, 18:12:03
    :datz:  :paperbag: Logischerweise muss ich dann BEIDE tabellen nochmal Joinen .... dann gehts auch:
    Code: SQL  [Auswählen]
    SELECT p.*,a.*,a2.*
    FROM products p
    LEFT JOIN autors_to_products ap ON p.products_id = ap.products_id
    LEFT JOIN autors a ON ap.autors_id = a.autors_id
    LEFT JOIN autors_to_products ap2 ON p.products_id = ap2.products_id
    LEFT JOIN autors a2 ON ap2.autors_id = a2.autors_id
    WHERE a.autors_id =1510

    Aber Danke für den Hinweis, damit wusste ich, ich bin auf dem richtigen Weg!

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: SQL Frage - Kreuztabelle - zwei Queries in einem
    Antwort #6 am: 10. Februar 2016, 18:25:36
    Gerne  :thumbs:

    Gruss Gerhard