Hallo,
ich probier mal, mein Problem verständlich zu erklären:
Ich schreibe an einem Verzeichnis für DJs aus meiner Region. Und da sich meine Datenbank so langsam füllt, schreit das ganze noch vor Release nach neuen Funktionen.
Ich habe es so gestaltet, dass wenn man ein DJ-Profil aufruft, in der linken Hälfte der Seite ein Verzeichnis ist, mit weiteren DJs die eine ähnliche Musikrichtung spielen. Ich habe jedem DJ 2 Musikrichtungen zugeteilt.
zB
Nico Rous - Deep House - Minimal Techno
Björn Hofmann - Minimal Techno - Tech House
Sven Serfass - Minimal Techo - Deep House.
Nico Rous hat also Deep House als Hauptstil und Minimal Techno als Nebenstil. Soweit so gut. MySQL spielt auch soweit mit.
Wenn ich nun aber ... achje wie erklärt man das?!..
Ich mach das mal so..
So, wenn DJ #1 den Musikstil A hat, soll nach allen DJs gesucht werden, die als Primären Musikstil, Musikstil A haben, ausgenommen dem DJ, der bereits angezeigt wird.
Danach wird nach allen DJs gesucht, die den Musikstil A als zweiten Musikstil haben, wieder mit ausname des DJs, der bereits angezeigt wird.
Soweit so gut, es funktioniert.. auch wenn der Code etwas umständlich ist.
Dann wird nach allen DJs gesucht, die den Musikstil B als Primären haben, wieder ohne den angezeigten DJ.
Dann folgt jeder DJ mit dem Musikstil B als Sekundären Musikstil, wieder mit einer ausnahme.
Soweit so gut, in der Theorie sieht es gut aus. Nur habe ich das Problem, dass pro Sparte teilweise 2 mal der selbe DJ auftaucht, da es ja so gesehen möglich ist, da 2 mal nach jedem Musikstil gesucht wird.
Meine Frage hierzu:
Gibt es einen MySQL-Befehl (den ich jetzt die letzte Stunde übersehen habe), der mir erlaubt bereits ausgegebene DJs ohne vorgegebene Merkmale auszuschließen damit dieser nicht 2 mal in einer Liste auftaucht?
Wenn nicht, gäbe es da eine PHP-Lösung?
Wenn ja, welche?
Bzw, gibt es eine andere Möglichkeit? zB wenn man die Ausgabe nicht verhindern kann, dass man den doppelten DJ mittels Javascript ausblendet?
Für Tipps wäre ich sehr sehr dankbar.
lascaux
ich probier mal, mein Problem verständlich zu erklären:
Ich schreibe an einem Verzeichnis für DJs aus meiner Region. Und da sich meine Datenbank so langsam füllt, schreit das ganze noch vor Release nach neuen Funktionen.
Ich habe es so gestaltet, dass wenn man ein DJ-Profil aufruft, in der linken Hälfte der Seite ein Verzeichnis ist, mit weiteren DJs die eine ähnliche Musikrichtung spielen. Ich habe jedem DJ 2 Musikrichtungen zugeteilt.
zB
Nico Rous - Deep House - Minimal Techno
Björn Hofmann - Minimal Techno - Tech House
Sven Serfass - Minimal Techo - Deep House.
Nico Rous hat also Deep House als Hauptstil und Minimal Techno als Nebenstil. Soweit so gut. MySQL spielt auch soweit mit.
Wenn ich nun aber ... achje wie erklärt man das?!..
Ich mach das mal so..
PHP:
$q1s1s = 'SELECT uid, artist FROM '.$db_tab2.' WHERE 1st_style="'.$at_1st_style.'" AND uid !="'.$aid.'" ORDER BY RAND() LIMIT 8';
$r1s1s = mysql_query($q1s1s);
while($row11 = mysql_fetch_array($r1s1s)) { $res11uid = $row11['uid'];
$res11art = $row11['artist'];
echo ' <a href="show.php?aid='.$res11uid.'" title="'.$res11art.'">'.$res11art.'</a><br />';
echo "\n";
}
$q1s2s = 'SELECT uid, artist FROM '.$db_tab2.' WHERE 2nd_style="'.$at_1st_style.'" AND uid !="'.$aid.'" ORDER BY RAND() LIMIT 8';
$r1s2s = mysql_query($q1s2s);
while($row12 = mysql_fetch_array($r1s2s)) {
$res12uid = $row12['uid'];
$res12art = $row12['artist'];
echo ' <a href="show.php?aid='.$res11uid.'" title="'.$res12art.'">'.$res12art.'</a><br />';
echo "\n";
}
$q2s1s = 'SELECT uid, artist FROM '.$db_tab2.' WHERE 2nd_style="'.$at_1st_style.'" AND uid !="'.$aid.'" ORDER BY RAND() LIMIT 8';$r2s1s = mysql_query($q2s1s);while($row21 = mysql_fetch_array($r2s1s)) { $res21uid = $row21['uid']; $res21art = $row21['artist']; echo ' <a href="show.php?aid='.$res21uid.'" title="'.$res21art.'">'.$res11art.'</a><br />'; echo "\n"; } $q2s2s = 'SELECT uid, artist FROM '.$db_tab2.' WHERE 2nd_style="'.$at_2nd_style.'" AND uid !="'.$aid.'" ORDER BY RAND() LIMIT 8';$r2s2s = mysql_query($q2s2s);while($row22 = mysql_fetch_array($r2s2s)) { $res22uid = $row22['uid']; $res22art = $row22['artist']; echo ' <a href="show.php?aid='.$res22uid.'" title="'.$res22art.'">'.$res22art.'</a><br />'; echo "\n";
}
So, wenn DJ #1 den Musikstil A hat, soll nach allen DJs gesucht werden, die als Primären Musikstil, Musikstil A haben, ausgenommen dem DJ, der bereits angezeigt wird.
Danach wird nach allen DJs gesucht, die den Musikstil A als zweiten Musikstil haben, wieder mit ausname des DJs, der bereits angezeigt wird.
Soweit so gut, es funktioniert.. auch wenn der Code etwas umständlich ist.
Dann wird nach allen DJs gesucht, die den Musikstil B als Primären haben, wieder ohne den angezeigten DJ.
Dann folgt jeder DJ mit dem Musikstil B als Sekundären Musikstil, wieder mit einer ausnahme.
Soweit so gut, in der Theorie sieht es gut aus. Nur habe ich das Problem, dass pro Sparte teilweise 2 mal der selbe DJ auftaucht, da es ja so gesehen möglich ist, da 2 mal nach jedem Musikstil gesucht wird.
Meine Frage hierzu:
Gibt es einen MySQL-Befehl (den ich jetzt die letzte Stunde übersehen habe), der mir erlaubt bereits ausgegebene DJs ohne vorgegebene Merkmale auszuschließen damit dieser nicht 2 mal in einer Liste auftaucht?
Wenn nicht, gäbe es da eine PHP-Lösung?
Wenn ja, welche?
Bzw, gibt es eine andere Möglichkeit? zB wenn man die Ausgabe nicht verhindern kann, dass man den doppelten DJ mittels Javascript ausblendet?
Für Tipps wäre ich sehr sehr dankbar.
lascaux