Als ik het goed heb begrepen, zou dit moeten doen wat je nodig hebt:
$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.
}
Bewerken
Op uw verzoek zal ik de vraag toelichten. Het deel dat u waarschijnlijk in verwarring brengt, is deze subquery:
(IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))
De IF EXISTS
vertelt MySQL om TRUE of FALSE te retourneren als het gedeelte dat er direct op volgt 'bestaat' (bevat een resultaat). De SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1
vertelt MySQL eenvoudig om een rij op te zoeken in user_specialty
waar s.id = us.sid
(de speciale ID komt overeen) en us.uid = '$id'
(de ID is van de gebruiker).