Eu tenho 2 tabelas TA
e TB
:
TA
--------
id name
1 a
2 b
3 c
4 d
5 e
6 f
TB
--------
id p_id name
1 1 a
2 1 b
3 1 c
4 2 a
5 2 b
6 2 d
Eu preciso: se p_id = 1
então:
id name match
1 a 1
2 b 1
3 c 1
4 d 0
5 e 0
6 f 0
Se p_id = 2
então:
id name match
1 a 1
2 b 1
3 c 0
4 d 1
5 e 0
6 f 0
Você precisa usar um LEFT OUTER JOIN para conseguir isso:
SQL Fiddle
Configuração do esquema do MySQL 5.5.32 :
Consulta 1 :
Resultados :
Consulta 2 :
Resultados :
A consulta de interesse é agrupada no procedimento
test
. Isso torna o trabalho com SQLFiddle um pouco mais fácil. Mas você certamente pode usar a consulta fora de um procedimento. No entanto, preste atenção ao fato de que a comparação com o valor do parâmetro faz parte da avaliação do LEFT JOIN.Para mais informações sobre JOINs, confira minha série JOIN aqui: http://sqlity.net/en/1146/a-join-a-day-introduction/
Essa série é escrita sobre o SQL Server. Mas a maioria dos conceitos e a maior parte da sintaxe também se aplicam ao MySQL.