Ik zit lekker met mysql te spelen en probeer wat relationele stuf uit maar loop meteen al vast.
stel,
ik wil uit DB de volgende lijst genereren:
dit is de database:
ik doe deze left join query:
dit geeft als result:
allemaal leuk en aardig,
maar hier kan je natuurlijk niet zoveel mee vanwege de dubbele waarden.
relationeel klopt dit dus waarschijnlijk dus niet zo,
maw, je kan hier weinig mee.
als je de data dan wel nuttig er uit wil halen, is het dan dus verstandiger om het in 2 queries te doen?
of hoe zit dat volgens de leer?
stel,
ik wil uit DB de volgende lijst genereren:
code:
1
2
3
4
5
6
7
8
9
10
11
| naam:
piet
tel nrs:
0666666
010-1111111
06-0888888
honden:
bello
fifi |
dit is de database:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| table user +----+------+-----+ | id | name | age | +----+------+-----+ | 1 | piet | 35 | | 2 | hans | 33 | +----+------+-----+ table phone +----+---------+--------------+ | id | user_id | number | +----+---------+--------------+ | 1 | 1 | 0666666 | | 2 | 2 | 020 22222222 | | 3 | 1 | 010-1111111 | | 4 | 1 | 06-0888888 | +----+---------+--------------+ table dog +----+---------+-------+ | id | user_id | name | +----+---------+-------+ | 1 | 1 | bello | | 2 | 1 | fifi | +----+---------+-------+ |
ik doe deze left join query:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| SELECT user.id AS user_id, user.name AS user_name, user.age, phone.id AS phone_id, phone.number, dog.id AS dog_id, dog.name AS dog_name FROM phone LEFT JOIN user on phone.user_id=user.id LEFT JOIN dog on dog.user_id=phone.user_id where user.id='1' |
dit geeft als result:
code:
1
2
3
4
5
6
7
8
9
10
| +---------+-----------+------+----------+-------------+--------+----------+ | user_id | user_name | age | phone_id | number | dog_id | dog_name | +---------+-----------+------+----------+-------------+--------+----------+ | 1 | piet | 35 | 1 | 0666666 | 1 | bello | | 1 | piet | 35 | 1 | 0666666 | 2 | fifi | | 1 | piet | 35 | 3 | 010-1111111 | 1 | bello | | 1 | piet | 35 | 3 | 010-1111111 | 2 | fifi | | 1 | piet | 35 | 4 | 06-0888888 | 1 | bello | | 1 | piet | 35 | 4 | 06-0888888 | 2 | fifi | +---------+-----------+------+----------+-------------+--------+----------+ |
allemaal leuk en aardig,
maar hier kan je natuurlijk niet zoveel mee vanwege de dubbele waarden.
relationeel klopt dit dus waarschijnlijk dus niet zo,
maw, je kan hier weinig mee.
als je de data dan wel nuttig er uit wil halen, is het dan dus verstandiger om het in 2 queries te doen?
of hoe zit dat volgens de leer?
"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who