Left join

Gsus

schwankend^^
ID: 215354
L
22 Mai 2006
1.553
68
Hallo,
habe grade eine totale blockade irgendwie.. ich habe zwei Tabellen, eine in der rahmendaten zu einer bestellung drinstehen, also versandart usw. und eine in der die einzelnen positionen mit preis und menge aufgelistet sind. nun will ich daraus eine Tabelle ausgeben mit jeweils einer zeile pro bestellung und in einer zelle alle artikel die zu dieser bestellung gehören. wie stelle ich das an?

ich hoffe ihr versteht das problem und könnt mir helfen.
 
Hast Du pro Artikel in MySQL einen extra Eintrag?

Wenn ja, folgende Möglichkeit:
PHP:
$r = mysql_query("SELECT a.versand, a.wasanderes, b.artikel, b.preis, b.menge FROM a, b WHERE a.bestellnr = 1001 AND b.bestellnr = 1001");

while($a = mysql_fetch_array($r))
{
  echo $a['artikel']." / ".$a['preis']." / ".$a['menge']."<br>";
}

echo $a['versand']." / ".$a['wasanderes'];

Formatierung ist ja Nebensache :)

Grüße
 
ja genau so... das problem daran ist, dass ich das ganze halt für mehr als eine bestellung brauche in einer tabelle.. wenn du verstehst was ich meine

BestellID|Artikel|Preis|...
1|1 x Artikel 1{br}1 x Artikel 2{br}2x Artikel 3|10,99€|...
2|1 x Artikel 1{br}1 x Artikel 2{br}2x Artikel 3|10,99€|...
3|1 x Artikel 1{br}1 x Artikel 2{br}2x Artikel 3|10,99€|...
 
Direkt aus MySQL diese Form herauszubekommen, dürfte schwierig sein. Ich sehe da eigentlich nur zwei Varianten:
a) jede Bestellung einzeln aus der Datenbank auslesen und in einer Schleife in PHP in die Ausgabe schreiben
b) Eine Datenbankabfrage, die dir in etwa das hier liefert:
BestellID|Artikel|Preis|...
1|1 x Artikel 1|10,99€|...
1|1 x Artikel 2|10,99€|...
1|2 x Artikel 3|10,99€|...
2|1 x Artikel 1|10,99€|...
2|1 x Artikel 2|10,99€|...
2|2 x Artikel 3|10,99€|...
3|1 x Artikel 1|10,99€|...
3|1 x Artikel 2|10,99€|...
3|2 x Artikel 3|10,99€|...
PHP:
SELECT  b.ID
      , a.Anzahl
      , a.Artikel
      , a.Preis
FROM    Bestellungen b
JOIN    Artikel a
  ON    a.BestellID = b.ID
In der Ausgabe in PHP könnte man das ja ggf. auch in deine Form bringen...
 
Jo. Wenn dann das Marac gesagt hat.
Meine SQL-Abfrage wäre so:

PHP:
$r = mysql_query("SELECT b.id, a.artikel, a.menge, a.preis, a.versand, a.etc FROM a, b WHERE a.id = b.id ORDER BY b.id");
 
Meine SQL-Abfrage wäre so
Ist ja prinzipiell das selbe (wenn die Bestell-ID in beiden Tabellen "id" heißt), nur dass du den JOIN eben nicht ausformulierst... "from a, b where a.id = b.id" ist ja prinzipiell das selbe wie "from b join a on a.id = b.id". Ich bevorzuge nur die ausformulierten Joins, da hier die Bedingung klarer erkennbar ist, wie die beiden Tabellen miteinander verknüpft sind. Ist aber in erster Linie dann interessant, wenn es mehr als zwei Tabellen sind, oder mehr als eine Verknüpfungsbedingung...

#edit: x3ntar hat in einem anderen Thread eine Lösung gepostet, die auch hier passen könnte... Schau dir doch das mal an...
 
Zuletzt bearbeitet: