Jump to content
Sign in to follow this  
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?

Share this post


Link to post
Share on other 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());

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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());

Share this post


Link to post
Share on other 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());

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.