Hilfe zu Abfrage 2 Tabellen (Join?)
rfunky
- datenbank
0 Cheatah0 Vinzenz Mai0 EKKi
Hallo,
ich hoffe ihr könnt mir helfen.
Ich habe mehrere Tabellen in MySQL:
1. Kunden
+----+--------+-----------+
| ID | Name | Ort |
+----+--------+-----------+
| 1 | Name1 | Köln |
| 2 | Name2 | Siegburg |
| 3 | bla | Bonn |
| ...| ... | ... |
+----+--------+-----------+
2. Buch
+----+--------+-----------+
| ID | Buch_ID| Kunden_ID |
+----+--------+-----------+
| 1 | B-12 | K-3 |
| 2 | B-23 | K-1 |
| 3 | B-12 | K-1 |
| ...| ... | ... |
+----+--------+-----------+
Es kann vorkommen, dass es zu einer Kunden_ID mehrere Bücher gibt.
Nun will ich abfragen, wer z.B. das Buch mit der Buch_ID B-12 von mir ausgeliehen hat.
Mein Ansatz war bisher der:
$result=MYSQL_QUERY("SELECT * FROM Kunden k INNER JOIN Buch b ON k.ID = b.Kunden_ID WHERE b.Buch_ID = 'B-12' limit 0,100");
Das klappt natürlich nicht, weil die Kunden_ID in der Tabelle Buch mit einem K- anfängt. Wie baue ich das ein?
Die Abfrage zum Test $resulttyp=MYSQL_QUERY("SELECT * FROM Kunden k INNER JOIN Buch b ON k.ID = b.ID WHERE b.Buch_ID = 'B-12' limit 0,100"); bringt mir Ergebnisse, die natürlich nicht entsprechend stimmen.
Kann ich das überhaupt so verknüpfen, so dass mit alle Ergebnisse richtig per Select ausgeworfen werden.
Vielen Dank für eine Hilfe.
Richard
Hi,
Das klappt natürlich nicht, weil die Kunden_ID in der Tabelle Buch mit einem K- anfängt. Wie baue ich das ein?
warum tut sie das? Wenn damit ein Datensatz einer anderen (oder auch der gleichen) Tabelle referenziert werden soll, muss hier der entsprechende Primärschlüsselwert drin stehen. Ein "K-42" hat mit "42" nicht die geringste Ähnlichkeit.
Cheatah
Hallo
- Kunden
+----+--------+-----------+
| ID | Name | Ort |
+----+--------+-----------+
| 1 | Name1 | Köln |
| 2 | Name2 | Siegburg |
| 3 | bla | Bonn |
| ...| ... | ... |
+----+--------+-----------+
sieht noch einigermaßen ok aus.
- Buch
+----+--------+-----------+
| ID | Buch_ID| Kunden_ID |
+----+--------+-----------+
| 1 | B-12 | K-3 |
| 2 | B-23 | K-1 |
| 3 | B-12 | K-1 |
| ...| ... | ... |
+----+--------+-----------+
die sollte eher so aussehen:
+----+--------+-----------+
| ID | Buch_ID| Kunden_ID |
+----+--------+-----------+
| 1 | 12 | 3 |
| 2 | 23 | 1 |
| 3 | 12 | 1 |
| ...| ... | ... |
+----+--------+-----------+
Ich empfehle immer wieder gerne unser JOIN-Artikel:
Einführung in Joins
Fortgeschrittene Jointechniken
Es sieht so aus, als könntest Du aus diesen beiden Artikeln viel lernen.
Freundliche Grüße
Vinzenz
Mahlzeit,
Das klappt natürlich nicht, weil die Kunden_ID in der Tabelle Buch mit einem K- anfängt.
Warum tut sie das? IMHO ziemlicher Schwachsinn ... Foreign-Keys sind nicht dazu gedacht, "menschenlesbar" zu sein.
Wie baue ich das ein?
Am sinnvollsten gar nicht - stattdessen würde ich ein Tabellenredesign empfehlen.
MfG,
EKKi