Ir para conteúdo

POWERED BY:

Arquivado

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

pedrola

[Resolvido] SELECT com várias tabelas

Recommended Posts

Olá!

 

Tenho 6 tabelas e cada uma delas têm campos diferentes, com exceção da "num_sorteio" e "participando".

 

O que eu quero fazer é um sorteio eletronico, onde será pego um numero aleatóriamente entre essas tabelas. Algo como:

 

SELECT num_sorteio FROM todas as tabelas WHERE participando = 1 ORDER BY rand() LIMIT 1

 

Mas fazendo isso tenho um problema: mesmo sendo "num_sorteio" e "participando" dois campos iguais em tds as tabelas, ele dá erro de "Ambiguous" (ou algo do tipo).

 

Alguem teria uma luz? Para qm manja de banco isso deve ser baba!

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esses campos se relacionam? ou apenas tem nomes iguais por coincidência?

 

você precisa informar de qual tabela, é o campo que você quer, qndo tiver esse tipo de conflito:

SELECT tabela.num_sorteio FROM

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se relacionando não estão... é q é um sorteio.

 

Imagine eu pegando 6 caixas com bolinhas com numeros, misturasse tudo num saco e pegasse apenas uma bolinha.

 

Sacou o lance?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente algo assim :

 

select * from
(
SELECT num_sorteio FROM tabela1 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela2 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela3 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela4 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela5 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela6 WHERE participando = 1 
) ORDER BY rand() LIMIT 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, desculpa a demora pela resposta!

 

Mas kra era isso mesmo! Só uma correçãozinha boba, faltou o "AS num_sorteio" depois (para o caso de alguém ter a mems dúvida q eu tive)

 

select * from
(
SELECT num_sorteio FROM tabela1 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela2 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela3 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela4 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela5 WHERE participando = 1 
union all
SELECT num_sorteio FROM tabela6 WHERE participando = 1 
)  AS num_sorteio ORDER BY rand() LIMIT 1

Valeu!

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.