Ajuda com query

7 respostas
Giulliano

Se eu tenho duas tabelas DB_CARRO e DB_MONTADORA (exemplos)

DB_CARRO se relaciona com DB_MONTADORA um pra um. Porém na tabela DB_MONTADORA existem alguns relacionamentos quebrados, ou seja, existem registros pra ID_DB_CARRO que não existem na tabela Db_CARRO.

Como saber quais são esses registros ???

7 Respostas

rafaelglauber

Oi,

Fiquei confuso, você tá querendo achar montadoras que não tenham fabricado nenhum carro (ou seja montadoras que não tenham registros correspondentes na tabela de carro)?

Se for isso, poderia ser assim:

select montadora.* from montadora left join carro on montadora.id_montadora = carro.id_montadora where carro.id_carro is null

ou mesmo testado com uma subquery no where:

select * from montadora where (select count(1) from carro where carro.id_montadora = montadora.id_montadora)=0

EDITs: para ajeitar as tags

Jarf

Não deu pra entender muito bem. Seja um pouco + claro =D

Você tem ID_DB_CARRO em montadora, mas na propria tabela carro vc nao tem ID_DB_CARRO? :roll:

rbamartins

Amigo, não entendi muito bem.
Mas, se em DB_MONTADORA você tem um valor para a chave estrangeira @ID_DB_CARRO e esse valor não existe em DB_CARRO há uma falha e esse relacionamento não existe.

Explique mais um pouco seu problema.

Giulliano

rbamartins:
Amigo, não entendi muito bem.
Mas, se em DB_MONTADORA você tem um valor para a chave estrangeira @ID_DB_CARRO e esse valor não existe em DB_CARRO há uma falha e esse relacionamento não existe.
Explique mais um pouco seu problema.

O meu problema é exatamente esse. O banco não garante a integridade e existem valores para essa FK (@ID_DB_CARRO) que não existem na tabela DB_CARRO

Consegui criar a seguinte pesquisa…acho q é isso !!!

SELECT  M.ID_DB_CARRO FROM DB_MONTADORA M 
WHERE NOT EXISTS 
(SELECT C.ID_DB_CARRO FROM DB_CARRO C WHERE M.ID_DB_CARRO = C.ID_DB_CARRO)
rbamartins
Giulliano:
rbamartins:
Amigo, não entendi muito bem. Mas, se em DB_MONTADORA você tem um valor para a chave estrangeira @ID_DB_CARRO e esse valor não existe em DB_CARRO há uma falha e esse relacionamento não existe. Explique mais um pouco seu problema.

O meu problema é exatamente esse. O banco não garante a integridade e existem valores para essa FK (@ID_DB_CARRO) que não existem na tabela DB_CARRO

Consegui criar a seguinte pesquisa...acho q é isso !!!

SELECT  M.ID_DB_CARRO FROM DB_MONTADORA M 
WHERE NOT EXISTS 
(SELECT C.ID_DB_CARRO FROM DB_CARRO C WHERE M.ID_DB_CARRO = C.ID_DB_CARRO)

Tudo bem.

Você vai conseguir saber onde tem um e não tem outro.
Mas, iai o que vai fazer com esses ID_DB_CARRO de MONTADORA que não existem em DB_CARRO ????

Giulliano

vou ter q apagar ou passar pra null…sei lá qq coisa que não impeça o hibernate de fazer as consultas…

não fui eu quem fez as tabelas viu…não pensem q estou querendo tapar o sol com a peneira, só estou resolvendo ‘bugs’ …

valew pela ajuda ae todo mundo…

rbamartins

Tranquilo amigão.

Qualquer coisa estamos ai.

Abraços

Criado 6 de novembro de 2008
Ultima resposta 6 de nov. de 2008
Respostas 7
Participantes 4