#1 4. Mai 2013 Bestellabfrage alle Hallo zusammen, ich komme leider seit 2 Stunden nicht weiter. Ich habe 3 Tabellen, die ich verknüpfen will. Leider habe ich probleme mit dem Aufbau. tabelle = product tabelle = product_order_details tabelle = product_order Ich möchte alle Produkte,Preise und Details zur Bestellung zur jeweiligen Bestellnummer ausgeben. Was möchte ich? Alle Bestellungen aus der DB-> alle darin enthaltenen Produkte der Bestellnummer (immer mehrere) -> alle Details der Bestellnummer Bestelldetails. Mein Ansatz ist: Code: $query = sprintf("SELECT o.ID, o.productID, o.order_number, o.amount, o.price, od.shipping_price, od.status, od.date, od.invoice, od.print, (SELECT SUM(price * amount) FROM product_order WHERE order_number = o.order_number) AS price FROM product_order AS o JOIN product_order_details AS od JOIN product AS p WHERE od.print = 0 AND od.order_number = o.order_number GROUP BY o.order_number" ); $result = mysql_query($query); IF(mysql_num_rows($result) == 0){echo "<div class='warning'>Keine neue Bestellungen vorhanden</div>";} while($o = mysql_fetch_object($result)) { $all_sum = $o->price + $o->shipping_price; //Bestellnummer ausgeben //dazugehörigen detais von der Tabelle product_order_details //alle Prudukte ausgeben die zur jeweiligen Bestellnummer gehören aus product } oder Code: SELECT o.ID, o.productID, o.order_number, o.amount, o.price, od.shipping_price, od.STATUS, od.date, od.invoice, od.print, p.name, (SELECT SUM(price * amount) FROM product_order WHERE order_number = o.order_number) AS price FROM product AS p JOIN product_order AS o JOIN product_order_details AS od WHERE p.ID = o.productID aber dann kommt das als Ausgabe und ich möchte ja das,dass nach Bestellnummer gruppiert wird. Dies geht aber nicht, dann kommt nur ein Produkt aus der Betsellung jeweils Bestellnummer:50002 Dekostoff bedruckt, gold - 4 Bestellnummer:50002 Dekostoff bedruckt, gold - 4 Bestellnummer:50002 Dekostoff bedruckt, gold - 4 Bestellnummer:50002 Dekostoff bedruckt, gold - 4 Bestellnummer:50002 Dekostoff bedruckt, gold - 4 Bestellnummer:50002 Dekostoff bedruckt, gold - 4 Bestellnummer:50002 Dekostoff bedruckt, gold - 4 Bestellnummer:50002 Stabkerze, grün - 3 Bestellnummer:50002 Stabkerze, grün - 3 Bestellnummer:50002 Stabkerze, grün - 3 Bestellnummer:50002 Stabkerze, grün - 3 Bestellnummer:50002 Stabkerze, grün - 3 Bestellnummer:50002 usw. + Multi-Zitat Zitieren
#2 4. Mai 2013 AW: Bestellabfrage alle JOINs sind das Stichwort Code: SELECT * FROM product_order po JOIN (product_order_details pod ON pod.order_id = po.order_id) JOIN (rel_product_order rpo ON rpo.order_id = po.order_id) JOIN (product p ON p.product_id = rpo.product_id) Bzw. in der Theorie würde es mehr Sinn machen, das ganze in 2 Querys zu packen. Weil du hast zwar n Produkte in jeder Bestellung, aber die Details zu jeder Bestellung bleiben ja vermutlich identisch. Insofern die IDs in den Tabellen wirklich gleich heißen, kannst du auch USING() nehmen: Code: JOIN (product USING(product_id)) Ein bissl weniger Schreibarbeit und ist imho übersichtlicher. + Multi-Zitat Zitieren