Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

obtendo dados de duas tabelas no mysql, join não funcionaria aqui


Se eu entendi corretamente, isso deve fazer o que você precisa:
$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.
}

Editar

A seu pedido, irei em frente e explicarei a consulta. A parte que provavelmente está confundindo você é esta subconsulta:
(IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))

O IF EXISTS diz ao MySQL para retornar TRUE ou FALSE se a parte imediatamente a seguir 'existir' (contém um resultado). O SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1 simplesmente diz ao MySQL para encontrar uma linha em user_specialty onde s.id = us.sid (o ID de especialidade corresponde) e us.uid = '$id' (o ID é do usuário).