Hvis jeg har forstået det rigtigt, burde dette gøre det, du har brug for:
$result = mysql_query("SELECT (specName, (IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))) FROM specialities s;");
while (list($spec, $checked) = mysql_fetch_array($result)) {
// Do your outputting here.
}
Rediger
På din anmodning vil jeg gå videre og forklare forespørgslen. Den del, der sandsynligvis forvirrer dig, er denne underforespørgsel:
(IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))
IF EXISTS
fortæller MySQL at returnere enten TRUE eller FALSE, hvis delen umiddelbart efter den 'eksisterer' (indeholder et resultat). SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1
fortæller blot MySQL at finde en række i user_specialty
hvor s.id = us.sid
(special-id'et matcher) og us.uid = '$id'
(ID'et er brugerens).