*Problem* etwas speziellere Datenbankabfrage

ThaDogg

Grünschnabel
Erstmal guten morgen.

Ich hoffe, jemand von euch kann mir bei der Lösung meines Problems helfen, denn ich komm echt nicht mehr weiter!

Also ich habe 2 Tabellen, eine mit den Kundendaten (Name, Kunden-ID, usw.) und die andere mit den Aufträgen (ID, Datum, Typ, Kunden-ID, usw.).


Tabelle - Kundendaten:
---------------------------
Kunden-ID.................Kunden-Name
1.................................Kunde1
2.................................Kunde2
3.................................Kunde3


Tabelle - Aufträge:
----------------------
ID.........Datum.................Typ.............Kunden-ID
7...........01.01.2005..........5...............1
8...........01.01.2006..........6...............2
9...........01.01.2007..........7...............3


So in etwa sind meine 2 Tabellen aufgebaut.

Wie kann ich mir jetzt alle Aufträge in einer Liste anzeigen lassen und zwar mit den jeweiligen Kundennamen?
 
Zuerst eine normale Abfrage auf die Tabelle "Aufträge"

Dann mit dem erhaltenen Wert der Ausgabe eine neue Abfrage machen, nur diesmal auf die Tabelle "Kundendaten".

Also etwa so:
PHP:
$abfrage ="SELECT name FROM Kundendaten WHERE Kunden-ID ='$row[Kunden-ID]'

Jetzt hast du ja alle Angaben und kannst die Liste ausgeben ^^

Irgendwie ginge es nocht schöner...
 
Morgen,

So sollte es in einer Abfrage funktionieren:

Code:
SELECT kundendaten.id, kundendaten.sonstwas,
              aufträge.id, aufträge.sonstwas
FROM  kundendaten, aufträge
WHERE kundendaten.name = Variable_mit_Name
AND   kundendaten.id = aufträge.id

Aber aufpassen, wenn in den beiden Tabellen zwei gleichnamige Felder vorkommen (z.b. Datum), und Du diese ausgeben willst... beide werden mit Datum angesprochen! D.h. Du musst entweder über Indizes gehen oder in Deiner MySQL Abfrage
Code:
kundendaten.datum AS kund_datum,
aufträge.datum AS auft_datum,
einbauen.

[EDIT]
Oh Mist... ich habe jetzt einfach angenommen, dass Du mit einer MySQL Datenbank arbeitest. Naja, für andere Datenbanken dürfte es ja ähnlich funktionieren.

[noch ein Edit]
Weil ich gerade den Beitrag von Oliver lese: Diese Inner, Outer, Left, wasweisichnichtalles Joins habe ich (noch?) nicht kapiert... vielleicht schaffst Du es ja :)
 
Zuletzt bearbeitet:
Oliver Gringel hat gesagt.:
1. Das hat nichts mit PHP zu tun.
2. Das macht man mit Joins. Mehr dazu in der Dokumentation deiner Datenbank.
Meiner Ansicht nach hat das schon was mit PHP zu tun, da ich mir ja die Liste durch PHP ausgeben lasse. Ich muss allerdings auch zugeben, dass es natürlich aus mit MySql zu tun hat. Aber ich denke, ich bin hier schon richtig.
 
Skala hat gesagt.:
Zuerst eine normale Abfrage auf die Tabelle "Aufträge"

Dann mit dem erhaltenen Wert der Ausgabe eine neue Abfrage machen, nur diesmal auf die Tabelle "Kundendaten".

Also etwa so:
PHP:
$abfrage ="SELECT name FROM Kundendaten WHERE Kunden-ID ='$row[Kunden-ID]'

Jetzt hast du ja alle Angaben und kannst die Liste ausgeben :-)

Irgendwie ginge es nocht schöner...
Und du bist dir sicher, dass ich die beiden Abfrageergebniss dann auch in einer Liste ausgeben lassen kann?
Weil ich lasse mir bis jetzt die eine Abfrage der Aufträge ohne die Kundennamen per
PHP:
while($row=mysql_fetch_array($res))
{
}
ausgeben!
Aber wie soll ich da noch das Ergebnis der 2. Abfrage mit rein packen?
 
PHP:
while($row=mysql_fetch_array($res))
{
echo "Datum";
echo $row['Datum'];
echo "<br>";
$abfrage2 ="SELECT Kunde-Name FROM Kundendaten WHERE Kunden-ID ='$row[Kunden-ID]' ";
$result2 = mysql_query($abfrage2);
while ($row2 = result2['Kunden-Name']) {
echo "Kunden Name";
echo $row2['Kunden-Name'];
echo "<br>";
} 
echo "Typ";
echo $row['Typ'];
echo "<br>";
}

so? :-(
 
Zuletzt bearbeitet:
Skala hat gesagt.:
PHP:
while($row=mysql_fetch_array($res))
{
echo "Datum";
echo $row['Datum'];
echo "<br>";
$abfrage2 ="SELECT Kunde-Name FROM Kundendaten WHERE Kunden-ID ='$row[Kunden-ID]' ";
$result2 = mysql_query($abfrage2);
while ($row2 = result2['Kunden-Name']) {
echo "Kunden Name";
echo $row2['Kunden-Name'];
echo "<br>";
} 
echo "Typ";
echo $row['Typ'];
echo "<br>";
}

so? :-(
Könnte auch ne Lösung sein.

Habs jetzt aber so gelöst:
PHP:
 $sql = "SELECT kd_accounts.kd_name, orders.id, orders.datum, orders.typ, orders.kd, orders.text, orders.betrag, orders.bezahlt FROM kd_accounts, orders WHERE kd_accounts.kd_id=orders.kd ORDER BY datum DESC ";
 
Zurück