Jump to content

dúvida entre duas tabelas


Recommended Posts

Posted

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?

Posted

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'

Posted

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 😉😄

Posted

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.

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Posted

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?

Posted

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.

Posted

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? 😉

Posted

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

Posted

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.

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Posted

isto é mais SQL do que PHP mas pronto 😞

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

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
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.