Dúvida sobre query

13 respostas
arochafademac

Oi galera, alguem pode me ajudar com uma query?

Tenho 2 tabelas:

Entrada:

numero

cliente (foreign key cliente(numero))

data



EntradaVeiculo:

numeroEntrada (foreign key Entrada(numero))

placa

Preciso fazer uma consulta em que retorne o numero da visita, o cliente da tabela Entrada e a placa da tabela EntradaVeiculo, li algo sobre usar left join mas ainda não consegui.

Desde já agradeço

13 Respostas

M

Qual banco de dados vc está usando ??

Qual o tipo de aplicação está desenvolvendo ??

Bravox

Modelei uma base com as suas informações ai em cima o script para a criação da base ta em anexo ai

e a query que vc precisa acredito que seja alguma coisa parecida com essa aqui:

select e.numero, c.nome , ev.placa from entrada e join entradaveiculo ev on ( e.numero = ev.numeroEntrada ) join cliente c on ( e.cliente = c.id ) where c.nome = 'arochafademac';

qualquer coisa pode dar um toque ai !!

lembrado que usei o MySql como banco mas a query deve rodar ma maioria do bancos !

arochafademac

Estou usando H2 embeded. Vou testar e já posto

arochafademac

Certinho.

Obrigado e desculpa pela dúvida inocente.

arochafademac

Aproveitando…como faço no caso de um cadastro nulo em entradaveiculo, vamos supor que o camarada entrou a pé…comom faço para retornar na mesma query os que contem cadatro para veiculo e tb nulos?

Bravox

Pelo que eu entendi vc quer dizer que o mesmo cliente pode entrar com ou sem carro varias vezes, e quando ele não entra com carro nada é cadastrado na tabela entrada veiculo somente na tabela entrada é isso ?

arochafademac

Na mosca…
Sabe como?

arochafademac

O problema é que quando pesso o retorno ele apenas retorna os registros que existem nas duas tabelas.

S

Pode utilizar o comando LEFT JOIN que irá retornar os registros q existam na primeira e não necessáriamente na segunda.

arochafademac

Pode me dar um exemplo por favor?

dicabeca

bom pelo q eu entendi nao precisa de nenhum left join,e so um join normal mesmo usando count ficaria assim:

select count(*),ev.placa
from entrada e 
join entradaVeiculo ev on e.numero = ev.numeroEntrada
group by placa
dicabeca

desculpa o exepmlo q eu dei foi da sua 1 pergunta ,na segunda precisa de um left join sim ficaria assim

select *
 from entrada e 
 left join entradaVeiculo ev on e.numero = ev.numeroEntrada
where ev.numero = null

assim vc vai pegar os q tem entrada mais nao estao com nenhum veiculo
ou :

select *
 from entrada e 
 right join entradaVeiculo ev on e.numero = ev.numeroEntrada
where e.numero = null

assim vc vai pegar os q tem entrada com Veiculo mais nao estao com nenhuma entrada

dicabeca

resolveu seu problema isso ???

Criado 3 de agosto de 2007
Ultima resposta 6 de ago. de 2007
Respostas 13
Participantes 5