hallo.
ich sitze seit 2 tagen an einer aufgabe, die mir so einfach und so simpel erschien... aber nichts will hin hauen!
ich bin schon am überlegen ob meine komplette normalisierung vielleicht falsch ist und damit die schon mühsam angelegte datenbank...
folgendes:
in einer datenbank sollen audio-CD´s mit track-namen gespeichert werden. soweit nichts besonderes.
ferner sollen über eine tabelle "bilder/grafiken" den einzelnen track zugeordnet werden (eigentlich auch nichts besonderes).
beispiel:
- dem song "Baha Man - Who Let The Dogs Out" werden bilder von hunden zugeordnet (assoziations mäßig)
- dem song "Herbert Grönemeyer - Zum Meer" werden schöne meer-fotos zugeordnet
- usw usw usw.
mein bisheriges datenbank-model
[FONT=courier] tabelle: pics
------------------------------------------
| pic_id | bildurl | trk_id | uploaddate |
|--------|---------|--------|------------|
| 1 | u/5.jpg | 2 | 2004-05-12 |
| 2 | d/1.jpg | 4 | 2004-05-10 |
| 3 | u/6.jpg | 2 | 2004-01-22 |
| 5 | e/8.jpg | 2 | 2004-01-15 |
| 6 | e/9.jpg | 4 | 2003-12-04 |
------------------------------------------
tabelle: track
-----------------------------------------
| trk_id | cd_id | name &nbs p; |
|--------|-------|----------------------|
| 1 | 3 | Zum&n bsp;Meer |
| 2 | 2 | Who&n bsp;Let The Dogs Out |
| 3 | 3 | Mensc h |
| 4 | 3 | Der&n bsp;Weg |
-----------------------------------------
tabelle: cd
------------------------------
| cd_id | tite   ; |
|-------|--------------------|
| 2 | Baha Man |
| 3 | Herbert Grönemeyer |
------------------------------
beziehungen:
######## N / \ 1 ######### 1 / \ 1 ######
# pics #----- -----# track #----- -----# cd #
######## \ / ######### \ / ######
[/FONT]
nun möchte ich in einer liste möglichst OHNE / bzw mit möglichst WENIG ineinaner verschachtelten schleifen eine liste aller cds mit allen tracks und der jeweils zugeordneten anzahl bilder ausgeben! (das es funktioniert mit ineinander verschachtelten schleifen und vielen dantenbank abfragen hintereinander das weiß ich )
also:
[font=courier]CD - Hernert Grönemeyer
- Zum Meer (0)
- Mensch (0)
- Der Weg (2)
CD - Baha Man
- Who Let The Dogs Out (3)[/font]
(info: in den klammern steht jeweils die anzahl der bilder, die dem song zugeordnet sind)
problem:
...tja, wenn ich das wüsste! also ich habs schon mit sämtlichen LEFT, RIGHT und INNER JOINS probiert, leider ohne erfolg
inzwischen bin ich bei 2 in einander verschachtelten schleifen angelangt, aber selbst da funktioniert es nicht.
es treten immer die selben probleme auf, egal was für JOINS ich nehem oder wie ich es verschachtel:
- es werden NUR die tracks ausgegeben, die bilder enthalten! (also wenn einem track keine bilder zugeordnet sind, wird dieser bei der CD nicht mit ausgegeben!
- es werden ALLE in der tabelle "track" enthaltenen lieder zu EINEM album ausgegeben!
- es werden alle tracks zu der entsprechenden CD ausgegeben (wie ich es auch eigentlich will) allerdings sind die klammern () leer, also fragt er die "pic" tabelle nicht mit ab und zählt die bilder!
- ...
*verzweifel*
inzwischen mach ich mir halt gedanken, ob mein ER-Model vielleicht einen fehler enthält? KANN es so gar nicht funktionieren?????
JEDES bild ist ja genau EINEM track zugeordnet.
und JEDER track ist genau EINER cd zugeordnet.
also ist doch auch JEDES bild über die verknüpfung EINER cd zugewiesen, oder?
wäre wirklich nett wenn mir hier jemand helfen könnte!
vielen dank soweit
ich sitze seit 2 tagen an einer aufgabe, die mir so einfach und so simpel erschien... aber nichts will hin hauen!
ich bin schon am überlegen ob meine komplette normalisierung vielleicht falsch ist und damit die schon mühsam angelegte datenbank...
folgendes:
in einer datenbank sollen audio-CD´s mit track-namen gespeichert werden. soweit nichts besonderes.
ferner sollen über eine tabelle "bilder/grafiken" den einzelnen track zugeordnet werden (eigentlich auch nichts besonderes).
beispiel:
- dem song "Baha Man - Who Let The Dogs Out" werden bilder von hunden zugeordnet (assoziations mäßig)
- dem song "Herbert Grönemeyer - Zum Meer" werden schöne meer-fotos zugeordnet
- usw usw usw.
mein bisheriges datenbank-model
[FONT=courier] tabelle: pics
------------------------------------------
| pic_id | bildurl | trk_id | uploaddate |
|--------|---------|--------|------------|
| 1 | u/5.jpg | 2 | 2004-05-12 |
| 2 | d/1.jpg | 4 | 2004-05-10 |
| 3 | u/6.jpg | 2 | 2004-01-22 |
| 5 | e/8.jpg | 2 | 2004-01-15 |
| 6 | e/9.jpg | 4 | 2003-12-04 |
------------------------------------------
tabelle: track
-----------------------------------------
| trk_id | cd_id | name &nbs p; |
|--------|-------|----------------------|
| 1 | 3 | Zum&n bsp;Meer |
| 2 | 2 | Who&n bsp;Let The Dogs Out |
| 3 | 3 | Mensc h |
| 4 | 3 | Der&n bsp;Weg |
-----------------------------------------
tabelle: cd
------------------------------
| cd_id | tite   ; |
|-------|--------------------|
| 2 | Baha Man |
| 3 | Herbert Grönemeyer |
------------------------------
beziehungen:
######## N / \ 1 ######### 1 / \ 1 ######
# pics #----- -----# track #----- -----# cd #
######## \ / ######### \ / ######
[/FONT]
nun möchte ich in einer liste möglichst OHNE / bzw mit möglichst WENIG ineinaner verschachtelten schleifen eine liste aller cds mit allen tracks und der jeweils zugeordneten anzahl bilder ausgeben! (das es funktioniert mit ineinander verschachtelten schleifen und vielen dantenbank abfragen hintereinander das weiß ich )
also:
[font=courier]CD - Hernert Grönemeyer
- Zum Meer (0)
- Mensch (0)
- Der Weg (2)
CD - Baha Man
- Who Let The Dogs Out (3)[/font]
(info: in den klammern steht jeweils die anzahl der bilder, die dem song zugeordnet sind)
problem:
...tja, wenn ich das wüsste! also ich habs schon mit sämtlichen LEFT, RIGHT und INNER JOINS probiert, leider ohne erfolg
inzwischen bin ich bei 2 in einander verschachtelten schleifen angelangt, aber selbst da funktioniert es nicht.
PHP-Code:
$commands="SELECT * FROM cd";
$result_cd = db_execute($commands);
while($row_cd=mysql_fetch_object($result_cd)) {
echo 'CD - '.$row_cd->titel.'<br>';
//$commands="SELECT count(pics.trk_id) summe
FROM pics, track
WHERE pics.trk_id = track.trk_id";
//$commands="SELECT *, count(pics.trk_id) summe
FROM track, pics
WHERE track.cd_id = $row_cd->cd_id
AND pics.cd_id = $row_cd->cd_id
GROUP BY pics.trk_id";
// info: beide SELECT anweisungen funktionieren nicht!
$result = db_execute($commands);
while($row=mysql_fetch_object($result)) {
echo 'track name = '.$row->name.' - ('.$row->summe.')<br>';
}
}
es treten immer die selben probleme auf, egal was für JOINS ich nehem oder wie ich es verschachtel:
- es werden NUR die tracks ausgegeben, die bilder enthalten! (also wenn einem track keine bilder zugeordnet sind, wird dieser bei der CD nicht mit ausgegeben!
- es werden ALLE in der tabelle "track" enthaltenen lieder zu EINEM album ausgegeben!
- es werden alle tracks zu der entsprechenden CD ausgegeben (wie ich es auch eigentlich will) allerdings sind die klammern () leer, also fragt er die "pic" tabelle nicht mit ab und zählt die bilder!
- ...
*verzweifel*
inzwischen mach ich mir halt gedanken, ob mein ER-Model vielleicht einen fehler enthält? KANN es so gar nicht funktionieren?????
JEDES bild ist ja genau EINEM track zugeordnet.
und JEDER track ist genau EINER cd zugeordnet.
also ist doch auch JEDES bild über die verknüpfung EINER cd zugewiesen, oder?
wäre wirklich nett wenn mir hier jemand helfen könnte!
vielen dank soweit
Kommentar