Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Eu quero fazer uma consulta que retorne valores de duas tabelas. São valores diferentes... Eu achei q daria com UNION e UNION ALL mas não tá dando certo.
Eu tenho duas tabelas, com os seguintes campos, entre outros:
TAB_USUARIOS
id_usuario
nome
equipe
TAB_REQUER
id_usuario
nome
dist
requerimentos
ferias
Eu preciso que a consulta retorne o nome e a equipe da TAB_USUARIOS que pertençam a determinada equipe E o campo dist, requerimentos e ferias da TAB_REQUER vinculados a esse usuario da TAB_USUARIOS
Meu melhor palpite é esse:
$tabela = mysql_query("(SELECT id_usuario, nome FROM TAB_USUARIOS WHERE equipe like 'TI%' AND ativo = 'S') UNION ALL (SELECT id_usuario, dist, requerimentos, ferias FROM TAB_REQUER)");
Mas não ta funcionando. O erro é esse: The used SELECT statements have a different number of columns
Alguém tem alguma idéia?
INNER JOIN é a solução
Deu certo!!!!
Valeu a dica!!! Vou postar aqui o resultado pra ficar de referência:
$tabela = mysql_query("SELECT u.*, r.dist AS requer FROM usuarios AS u
INNER JOIN requer AS r ON u.id_usuario = r.id_usuario
WHERE u.equipe like 'TI%' AND u.ativo = 'S' ORDER BY u.equipe, u.nome ASC") or die(mysql_error());
Pessoal... surgiu outra questão agora... eu percebi q antes dessa consulta, eu tenho q fazer a da equipe separada. Pra juntar os resultados por equipe.
Então, fiz isso:
$busca_equip = mysql_query("SELECT equipe FROM usuarios WHERE equipe like 'TI%' ORDER BY equipe ASC");
while ($busca_equipa = mysql_fetch_array($busca_equip))
{
$equipe_result = $busca_equipa['equipe'];
$tabela = mysql_query("SELECT u.*, r.dist AS requer FROM usuarios AS uwhile ($resultado = mysql_fetch_array($tabela))
{
$nome = $resultado["nome"];
$requerimentos = $resultado["requerimentos"];
$dist = $resultado["dist"];
$ferias = $resultado["ferias"];
}
}
O problema é que tá fazendo várias vezes o primeiro while. Exatamente a quantidade de resultados que vem do 2º while... então, se do segundo retornam 7 resultados, o primeiro também faz 7 vezes. Alguém sabe onde errei?
Descobri...
SELECT DISTINCT
Não deu certo não...
A consulta não tá buscando o r.dist
Eu achei q tava mas percebi que na tab usuarios tinha um campo com o mesmo nome e ela tava buscando esse
$tabela = mysql_query("SELECT u.*, r.dist AS requer FROM usuarios AS u
INNER JOIN requer AS r ON u.id_usuario = r.id_usuario
WHERE u.equipe like 'TI%' AND u.ativo = 'S' ORDER BY u.equipe, u.nome ASC") or die(mysql_error());
Agora sim...
$tabela = mysql_query("SELECT u.nome, u.requerimentos, u.ferias, r.dist FROM usuarios AS u
INNER JOIN requer AS r ON u.id_usuario = r.id_usuario
WHERE u.equipe = '$equipe_result' AND u.ativo = 'S' ORDER BY u.equipe, u.requerimentos DESC, u.nome ASC") or die(mysql_error());
Faça um JOIN
http://dev.mysql.com/doc/refman/5.7/en/join.html