Pokud jsem to správně pochopil, mělo by to dělat to, co potřebujete:
$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.
}
Upravit
Na vaši žádost vysvětlím dotaz. Část, která vás pravděpodobně mate, je tento dílčí dotaz:
(IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))
IF EXISTS
říká MySQL, aby vrátilo buď PRAVDA, nebo NEPRAVDA, pokud část bezprostředně následující za ní 'existuje' (obsahuje výsledek). SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1
jednoduše řekne MySQL, aby našlo řádek v user_specialty
kde s.id = us.sid
(ID speciality se shoduje) a us.uid = '$id'
(ID je uživatelem).