Ако съм разбрал правилно, това трябва да направи това, от което се нуждаете:
$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.
}
Редактиране
По ваша заявка ще продължа и ще обясня запитването. Частта, която вероятно ви обърква, е тази подзаявка:
(IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))
IF EXISTS
казва на MySQL да върне TRUE или FALSE, ако частта, която непосредствено следва, „съществува“ (съдържа резултат). SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1
просто казва на MySQL да намери ред в user_specialty
където s.id = us.sid
(идентификаторът на специалността съвпада) и us.uid = '$id'
(идентификационният номер е на потребителя).