• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ricardocoimbra

dúvida entre duas tabelas

18 mensagens neste tópico

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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'

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

easy ;):D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isto é mais SQL do que PHP mas pronto :(

pois, também não vi nada de PHP...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

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