Om jag har förstått det rätt bör detta göra vad du behöver:
$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.
}
Redigera
På din begäran kommer jag att förklara frågan. Den del som förmodligen förvirrar dig är denna underfråga:
(IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))
IF EXISTS
säger till MySQL att returnera antingen TRUE eller FALSE om delen omedelbart efter den "finns" (innehåller ett resultat). SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1
säger helt enkelt till MySQL att hitta en rad i user_specialty
där s.id = us.sid
(specialitets-ID matchar) och us.uid = '$id'
(ID:t är användarens).