Hi zusammen, eines vorab, ich bin ein absoluter Anfänger was Mysql angeht, bei mir läuft das ganze eher nach dem Try&Error Prinzip ab Ich dachte mir das mir vielleicht einer einen kleinen Denkanstoß geben kann, da ich im Moment nicht weiter komme. Mein Problem ist folgendes: Ich lese mit meiner Abfrage alle Aufträge aus und lasse mir diese entsprechend nach Artikel, gekaufte Mengen und Paymentweise ausgeben. Soweit so gut…Das funktioniert auch wunderbar. SELECT sod.articleordernumber, sod.ordernumber, sod.name, sod.quantity, sod.articleID, so.paymentID, scp.name as payname FROM s\_order\_details sod INNER JOIN s\_order so ON sod.ordernumber=so.ordernumber INNER JOIN s\_core\_paymentmeans scp ON so.paymentID=scp.id WHERE sod.articleordernumber != 'sw-payment' ORDER BY sod.name ASC
Nun bräuchte ich aber zu den einzelnen Positionen noch die Informationen aus einem Artikelattributsfeld(attr5). Dieses finde ich in s_article_attributes , was über das Feld articleID eine Beziehung zu s_article_details hat. Im Moment habe ich es durch eine erneute Query in der Schleife gelöst, was aber selbst ich als Laie wirklich unsauber finde und gerne anders gelöst hätte. Wie kriege ich nun meiner Abfrage beigebracht das ich den Wert aus s_details_attributes.attr5 bei meiner Abfrage den zugehörigen Artikel mit zugeordnet wird ?
Hi, auf die Schnelle: SELECT sod.articleordernumber, sod.ordernumber, sod.name, sod.quantity, sod.articleID, so.paymentID, scp.name as payname, saa.attr5 FROM s\_order\_details sod INNER JOIN s\_order so ON sod.ordernumber=so.ordernumber INNER JOIN s\_core\_paymentmeans scp ON so.paymentID=scp.id INNER JOIN s\_articles\_details sad ON sad.ordernumber = sod.articleordernumber INNER JOIN s\_articles\_attributes saa ON saa.articledetailsID = sad.id WHERE sod.articleordernumber != 'sw-payment' ORDER BY sod.name ASC
Ist aber tendenziell problematisch, weil die Bestellungen ja prinzipiell erstmal unabhängig von den Artikeln sind. Wegen des INNER JOINS auf die s_articles_details werden dir jetzt aber keine Bestellungen mehr angezeigt, zu denen die Artikel nicht mehr existieren oder die keine Attribute haben. Von daher willst du da vll. eher zwei LEFT JOINs nutzen. Wegen der ganzen INNER JOINS kannst du den Check auf “sw-payment” eigentlich auch rauslassen - hast ja vermutlich keinen Artikel mit der Bestellnummer. Umgekehrt wird der Query auch nie Gutscheine, Aufschläge oder Abschläge ausgeben - eben weil das ja auch keine realen Artikel sind. Wenn du die haben willst, brauchst du auch wieder LEFT JOINS in den beiden von mir ergänzten JOINS. Besten Gruß, Daniel
Hallo Daniel, vielen Dank für die prompte Antwort ! Funktioniert genauso wie gewollt und Danke für den Hinweis wegen der INNER JOIN, dies hat keine Auswirkungen auf meinen Anwendungszweck. Vielen Dank :thumbup: