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

kadinho

Duvida SQL - Cruzar 2 tabelas

11 mensagens neste tópico

Bem pessoal tenho aqui um problema que a solução deve estar mesmo a minha frente mas ou estou mesmo parvo ou não sei.

É assim estou a juntar 2 tabelas (encomendas e lojas) e quero apenas mostrar as lojas e apenas as encomedas das lojas para o dia de hoje.

SELECT t2.IdLoja, Descricao, Data, Hora, DataEnc, HoraEnc, Artigos, Estado
FROM Encomendas t1 LEFT JOIN Lojas t2 on t1.Idloja = t2.IdLoja 
ORDER BY t1.IdLoja

Isto assim esta a mostrar as linhas todas iguais, sei que me falta ao o fitro da data mas não é por ai que está a acontecer isto.

Ou seja se não houver encomenda para a loja na data mostra os dados da tabela hoje com os campos da outra tabela vazios.

Já cruzei montes de tabelas e hoje estou a atrofiar com isto  :foolish:

Estou a colocar aqui a duvida porque esta query é para ser usada em PHP que depois vai ter mais luta  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sinceramente nunca usei os inner's.

Quando necessito de usar duas tabelas custumo fazer da seguinte forma:

SELECT tabela1.campo1, tabela1.campo2, tabela1.campo3, tabela2.campo1, tabela2.campo2, tabela2.campo3 WHERE tabela1.campo1=tabela2.campo1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que te falta o "AS":

FROM Enconmendas AS t1

Join Lojas AS t2

senão continuas a ter o nome original das tabelas e não os aliases

depois tens que ter cuidade com campos com o mesmo nome nas duas tabelas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não...  ;)

continuar a mostrar resultados iguais...

quero apenas a tabela das lojas numa determinada data e se tiver registo de encomenda mostra senão esta em branco...

grato

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não será algo do tipo

Select *

From ( Select *

          From Lojas

          Where Data = Hoje ) As LJ , Encomendas

Where LJ.idLoja = Encomendas.idLoja

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

;)

isso ta a dar o mesmo que isto

SELECT t2.IdLoja, Descricao, Data, Hora, DataEnc, HoraEnc, Artigos, Estado
FROM  Lojas as t2 LEFT JOIN Encomendas as t1 ON t1.IdLoja = t2.IdLoja
WHERE Data='2008-07-29 00:00:00' 
order by t2.IdLoja

tenho 86 registos na tabela Lojas e só me retorna 64 que são as encomendas de hoje e eu queria todas as 86 lojas e as que nao tem encomenda com a linha a branco.

thx pelas ajudas desde já

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existe alguma diferenca entre LEFT JOIN e LEFT OUTER JOIN...?

Experimenta por o OUTER...ou então usar o INNER JOIN ou o RIGHT JOIN ( em desespero de causa )

Sorry por nao poder ajudar mais.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

na boa... cada qual ajuda no que pode/sabe

mas isso ja eu andei a fazer...

ou tou mesmo parvo ou nao sei... já cruzei N tabela e funcionou bem, estas deve ter algo que nao funciona bem  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta:

mysql_query("bla bla bla")or die(mysql_error());

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