Het kan overigens ook in PHP opgelost kunnen worden dan krijg je dit effect:
ik pak alle medewerkers uit avondid 1, hier kies ik 1 random medewerker en zet deze in een array,
vervolgens maak ik een 2e query en selecteer alle medewerkers van avond id 2. ik kies weer 1 random medewerker uit, kijk of deze al in de array staat (in_array), zoja pak de volgende, zoniet zet deze weer in de array
zet alle medewerkers in een array, shuffle die array en vul dan elke medewerker een keer in, mits die voorkomt in de array. En haal als je een medewerker invult, die id dan uit de database.
<?php
$sql="
SELECT
RAND(c.medid),
a.dagid,
b.dagnaam,
b.dagtijdstip,
c.mednaam
FROM
koppeltabel a
dagen b,
medewerker c
WHERE
a.dagid=b.dagid
AND
a.medid=c.medid
";
?>
Niet getest maar zoiets moet mogelijk zijn
[edit]Komma vergeten[/edit]
[edit]Jammer van de tabknop[/edit]
ziet er goed uit, zou deze willen gebruiken aleen krijg nu een foutmelding: "Incorrect arguments to RAND"
<?php
$sql="
SELECT RAND(c.medid), a.dagid, b.dagnaam, b.dagtijdstip, c.mednaam
FROM
avondrooster AS a, avond AS b, medewerker AS c
WHERE
a.avondid=b.avondid
AND
a.medid=c.medid
";
?>
en nog ff terzijde, het random systeem zou alsnog niet een eerlijk systeem zijn, stel dat er random 3 keer dezelfde medewerker wordt ingeroosterd en 2 andere daardoor helemaal niet, aangezien het maar om 6 avonden gaat(dus niet echt dé oplossing), maargoed
<?php
// zet alle werknemers in een array
$sql="
SELECT
medid
FROM
medewerker";
$result=mysql_query($sql) or trigger_error(mysql_error);
while($row=mysql_fetch_assoc($result)){
$med_array[] = $row['medid'];
}
// $med_array bevat nu alle werknemers die je in kan zetten, dus die gaan we door elkaar husselen
shuffle($med_array);
//geef een teller mee om de goede dag te updaten
$dag_teller=1;
foreach($med_array as $key => $value){
//zo pakt die elke voorkomende medewerker in ieder geval 1 keer
// UPDATE de tabel met $value in de kolom medid
}
for($teller=$dag_teller;$teller<= 6; $teller++){
//hussel werknemers opnieuw pak de 1e waarde en geef die in
}
?>
<?php
$sql="
SELECT
c.medid,
a.dagid,
b.dagnaam,
b.dagtijdstip,
c.mednaam
FROM
koppeltabel a
dagen b,
medewerker c
WHERE
a.dagid=b.dagid
AND
a.medid=c.medid
ORDER BY RAND()
";
?>
Zet de RAND() eens in ORDER BY. Kun je daar mee uit de voeten?