Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maico Ray Maldaner

Problemas SELECT + INNER JOIN

Recommended Posts

Boa tarde, sou novato em programação, estou desenvolvendo um sistema de INTRANET para um empresa e me deparei com o seguinte problema.

 

Meu SELECT esta pegando dados de outra tabela e exibindo normalmente, porem no mesmo SELECT, quando pego dados da mesma tabela referente ao SELECT ele exibe dados nulos, não consegui resolver o problema, se puderem me ajudar, ficarei grato.

 

Segue a baixo meu SELECT junto com a print do resultado que obtenho com ele...

 

Meu SELECT:

SELECT v_viagens.id, v_carro.modelo, v_viagens.data, v_motorista.nome, v_destino.descricao, v_viagens.kmini, v_viagens.kmfim, v_viagens.periodo

FROM v_viagens

INNER JOIN v_carro ON v_carro.modelo = v_viagens.idcarro

INNER JOIN v_motorista ON v_motorista.nome = v_viagens.motorista

INNER JOIN v_destino ON v_destino.descricao = v_viagens.destino

ORDER BY v_viagens.id DESC

 

Print:

i42135_select-problema.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

viagens = v

carro = c

motorista = m

destino = d

 

----------

 

SELECT v.id, v.modelo, v.data, m.nome, d.descricao, v.kmini, v.kmfim, v.periodo

FROM

(v_viagens v INNER JOIN v_carro c ON c.modelo = v.idcarro)

INNER JOIN v_motorista m ON m.nome = v.motorista

INNER JOIN v_destino d ON d.descricao = v.destino

ORDER BY v.id DESC

 

Recomendo fazer uso de alias, alem de deixar o código mais limpo fica bem mais compreensível pra você e pra quem o lê.

- Seguinte, seria mais facil você colocar a modelagem conceitual do banco aqui, porque esses campos realmente são as chaves primaria e estrangeria dessas tabelas? este banco está na terceira forma normal ?

 

Veja bem na linha 1, primeira junção interna você ta comparando o modelo da tabela carro com o idcarro da tabela viagens, como você quer comparar uma string com um dado inteiro ?

 

E a sintaxe de junção interna com 4 tabelas é a seguinte:

 

SELECT a.campo1, b.campo2, c.campo3, d.campo4

FROM

( tabela1 a INNER JOIN tabela2 b ON a.id1 = b.id1 )

INNER JOIN tabela3 c ON c.id3 = b.id2

INNER JOIN tabela4 d ON d.id4 = c.id3

 

 

Poste a modelagem dessas tabelas, ficará mais facil te ajudar.

ps: Jogue fora seu mysql e faça uso do postgresql. =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com a ajuda do pessoal, resolvi da seguinte forma:

 

SELECT v_viagens.id, v_carro.modelo, v_viagens.data, v_motorista.nome, v_abastecimento.litros, v_destino.descricao, (v_viagens.kmfim-v_viagens.kmini) AS kmpercorrido, v_viagens.periodo, v_viagens.motivo FROM v_viagens INNER JOIN v_carro ON v_carro.id = v_viagens.idcarro INNER JOIN v_motorista ON v_motorista.id = v_viagens.motorista

INNER JOIN v_destino ON v_destino.id = v_viagens.destino

INNER JOIN v_abastecimento ON v_abastecimento.id = v_viagens.idcarro

ORDER BY v_viagens.id DESC;

 

 

 

* Fabio Abreu, obrigado pela devida atenção, consegui resolver meu problema com a sua ajuda.

 

* Everton, agradeço a sua ajuda, consegui resolver o problema antes do seu post. Se não tivesse conseguido, com certeza com sua ajuda eu conseguiria.

Quanto ao postgresql, poderia manda PM me dizendo porque ele eh melhor? Como citei no tópico, estou começando nessa área, toda informação eh muito importante pra mim.

 

Um abraco,

Att,

 

Maico Maldaner.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.