Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

ricardocoimbra

dúvida entre duas tabelas

Mensagens Recomendadas

ricardocoimbra    0
ricardocoimbra

Tenho 2 tabelas

Tabela1 -

id

produto

Tabela2 -

id

produto

Como faço uma query a pesquisar nas duas tabelas para obter por exemplo o produto laranjas

$query = "SELECT produto FROM `Tabela1` WHERE produto='laranjas";

Mas e para fazer nas duas ao mesmo tempo?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ricardocoimbra    0
ricardocoimbra

Pois assim dava:

mas imaginemos que eu tinha um campo diferente:

Tabela1 -

id

produto

revendedor

Tabela2 -

id

produto

cliente

Ele já não me vai listar direito. Como fazia?

Porque eu ao fazer isto ele não me vai dar certo:

SELECT id,produto,revendedor,revendedor FROM tabela1 where produto='laranja'

UNION

SELECT id,produto,cliente FROM tabela2 where produto='laranja'

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ricardocoimbra    0
ricardocoimbra

Isso não dá para fazer, porque ele assim não sabe a qual tabela vai buscar.

SELECT produto FROM tabela1, tabela2 WHERE produto = 'laranjas'

easy ;):D

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
killercode    1
killercode

lol

tens razão.... então tens as tabelas mal normalizadas....

afinal produto é produto e não tem de estar em 2 tabelas.... podes dizer qual é o exemplo em concreto?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
shumy    17
shumy

Não estou muito bem a ver a duvida, mas se queres unir querys tens de ter campos iguais.

tipo:

SELECT id,produto,revendedor AS campo FROM tabela1 WHERE produto='laranja'

UNION ALL

SELECT id,produto,cliente AS campo FROM tabela2 WHERE produto='laranja'

isto se revendedor e cliente forem do mesmo tipo de dados.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ricardocoimbra    0
ricardocoimbra

Bem neste caso devia era estar tudo na mesma tabela, mas como não fui eu que começei com o trabalho. E ja tem muitos registos inseridos agora tenho que remendar o erro.

A dificuldade está que eles estao em tabelas separadas, mas union dava se os campos fossem todos iguais. mas ele tem um campo diferente revendedor e o cliente logo ai torna dificil. E que não estou mesmo a ver solução.

lol

tens razão.... então tens as tabelas mal normalizadas....

afinal produto é produto e não tem de estar em 2 tabelas.... podes dizer qual é o exemplo em concreto?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ricardocoimbra    0
ricardocoimbra

shumy é mesmo isso ;) obrigado a todos! um abraço

Não estou muito bem a ver a duvida, mas se queres unir querys tens de ter campos iguais.

tipo:

SELECT id,produto,revendedor AS campo FROM tabela1 WHERE produto='laranja'

UNION ALL

SELECT id,produto,cliente AS campo FROM tabela2 WHERE produto='laranja'

isto se revendedor e cliente forem do mesmo tipo de dados.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ricardocoimbra    0
ricardocoimbra

Não vale apena  killercode   com o AS campo  funciona perfeitamente desconhecia, pk nunca o tinha utilizado assim algo semelhante.

Alias assim como tinha feito tb estava a dar  :wallbash: o campo é que ficava como revendedor

normalizas uma das tabelas.... e depois tentas copiar os dados atraves de querys... não da? ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
killercode    1
killercode

humm.... ok..

mas na minha opinião as vezes mais vale ter trabalho e corrigir tudo de raiz.... do q ter o dobro do trabalho mais tarde...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ricardocoimbra    0
ricardocoimbra

isso é verdade eu que o diga... tá me a dar uma dor de cabeça as vezes...

humm.... ok..

mas na minha opinião as vezes mais vale ter trabalho e corrigir tudo de raiz.... do q ter o dobro do trabalho mais tarde...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
shumy    17
shumy

isso é verdade eu que o diga... tá me a dar uma dor de cabeça as vezes...

humm.... ok..

mas na minha opinião as vezes mais vale ter trabalho e corrigir tudo de raiz.... do q ter o dobro do trabalho mais tarde...

Apoiado... se tiverem muito trabalho pela frente.

Começar bem é o melhor passo para acabar bem.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    73
M6

Bem neste caso devia era estar tudo na mesma tabela, mas como não fui eu que começei com o trabalho. E ja tem muitos registos inseridos agora tenho que remendar o erro.

A dificuldade está que eles estao em tabelas separadas, mas union dava se os campos fossem todos iguais. mas ele tem um campo diferente revendedor e o cliente logo ai torna dificil. E que não estou mesmo a ver solução.

Não obrigatoriamente, há alguns truques simples:

SELECT id, produto, revendedor, NULL as cliente FROM tabela1 WHERE produto='laranja'
UNION ALL
SELECT id, produto, NULL as revendedor, cliente AS campo FROM tabela2 WHERE produto='laranja' 

onde ficas com 4 colunas, ou então

SELECT id, produto, (VARCHAR(255)) revendedor as nome, 'revendedor' as tipo,FROM tabela1 WHERE produto='laranja'
UNION ALL
SELECT id, produto, (VARCHAR(255)) cliente as nome, 'cliente' as tipo FROM tabela2 WHERE produto='laranja' 

fazendo um cast para varchar consegues o que queres. Atenção que "(VARCHAR(255)) cliente" quer apenas dizer que faz um cast para varchar(255), tens de ver no manual da BD como se faz um cast para varchar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade