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

kadinho

Duvida SQL - Cruzar 2 tabelas

Mensagens Recomendadas

kadinho    0
kadinho

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheGlorious    0
TheGlorious

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Battousai    1
Battousai

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kadinho    0
kadinho

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
CerelacK    0
CerelacK

Não será algo do tipo

Select *

From ( Select *

          From Lojas

          Where Data = Hoje ) As LJ , Encomendas

Where LJ.idLoja = Encomendas.idLoja

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kadinho    0
kadinho

;)

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á

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
CerelacK    0
CerelacK

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kadinho    0
kadinho

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:

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 os nossos Termos de Uso e Política de Privacidade