Hallo,
mit dem
SQL-Server habe ich das gerade mal so gelöst (keine Ahnung, ob das auf
MySql übertragbar ist).
SQL-Code:
create table kunde(
id integer,
Name VarChar(20),
Buch1 integer,
buch2 integer,
buch3 integer
);
create table buch(
id integer,
titel varchar(20)
);
select Name, Max(TitelBuch1) As TitelBuch1, Max(TitelBuch2) As TitelBuch2, Max(TitelBuch3) As TitelBuch3 from (
select Name, buch.Titel as TitelBuch1, '' As TitelBuch2,'' as TitelBuch3 from Kunde, buch where kunde.buch1 = buch.id
union all
select Name, '' as TitelBuch1, buch.Titel As TitelBuch2,'' as TitelBuch3 from Kunde, buch where kunde.buch2 = buch.id
union all
select Name, '' as TitelBuch1, '' As TitelBuch2, buch.Titel as TitelBuch3 from Kunde, buch where kunde.buch3 = buch.id
) xxx
group by name
Das Ergebnis sieht dann so aus:
Code:
Name|TitelBuch1|TitelBuch2|TitelBuch3
Kunde1|Buch 1|Buch 6|Buch 11
Kunde2|Buch 2|Buch 7|Buch 12
Kunde3|Buch 3|Buch 8|Buch 13
Kunde4|Buch 4|Buch 9|Buch 14
Kunde5|Buch 5|Buch 10|Buch 15
Die Tabelle Kunden
Code:
id|Name|Buch1|Buch2|Buch3
1|Kunde1|1|6|11
2|Kunde2|2|7|12
3|Kunde3|3|8|13
4|Kunde4|4|9|14
5|Kunde5|5|10|15
Die Tabelle Buch
Code:
id|titel
1|Buch 1
2|Buch 2
3|Buch 3
4|Buch 4
5|Buch 5
6|Buch 6
7|Buch 7
8|Buch 8
9|Buch 9
10|Buch 10
11|Buch 11
12|Buch 12
13|Buch 13
14|Buch 14
15|Buch 15
Allerdings dürfte das Einfügen einer zusätzlichen Tabelle zwischen Kunde und Buch sinnvoller sein, damit auch mehr Bücher möglich sind. Da Kunde und Buch hier ja nur als Beispiel genannt sind, mag das für die tatsächliche Aufgabenstellung anders aussehen.