Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Vinícius

UNION ALL

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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());

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 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.nome ASC") or die(mysql_error());

while ($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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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());

Compartilhar este post


Link para o post
Compartilhar em outros sites

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());

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.