Como selecionar registros em A que tenham apenas um registro em B

6 respostas
bruno_7317

Olá, pessoal!

Estou com um probleminha que parece exercício de faculdade:

Preciso selecionar todos os registros de A que contenham SOMENTE um registro em B, sendo que o relacionamento entre os dois é
A --------C

Alguma idéia?

6 Respostas

gilmaslima

Posta su estrutura das tabelas …

bruno_7317

Imagine as tabelas assim:
Tabela A:
id_A

Tabela B:
id_AC
id_A (fk)
id_C (fk)

Tabela C:
id_C

naquele formato

A——C

gilmaslima

vê se isso lhe ajuda:

SELECT * 
FROM    tb_a a,
            tb_b b
WHERE  a.id_a = ( SELECT id_a 
                            FROM    tb_b
                            WHERE  1 = ( SELECT COUNT(*)
                                                 FROM    tb_a ta,
                                                             tb_b tb
                                                 WHERE  ta.id_a = tb.id_a ) )

Qual banco de dados está usando, dependendo do SGBD tem funções especificas para pegar a quantidade de linhas sem precisar fazer COUNT.

flw!

RenanRosa

bruno_7317:
Olá, pessoal!

Estou com um probleminha que parece exercício de faculdade:

Preciso selecionar todos os registros de A que contenham SOMENTE um registro em B, sendo que o relacionamento entre os dois é
A --------C

Alguma idéia?


Isso em JPA, Hibernate ou JDBC com SELECT no braço ?

bruno_7317

SELECTzão bare-hands mesmo…
To tentando puxar a consulta no Access. É idade das cavernas mesmo, mas é o que tem!

A

Você primeiro encontra todos os ids A que apareçam apenas uma vez em B:

SELECT ID_FKA
  FROM    TABELA_B
  GROUP BY ID_FKA
  HAVING COUNT(*) = 1

Depois é só fazer um join simples entre a tabela A e o resultado da consulta acima.

Criado 17 de março de 2011
Ultima resposta 18 de mar. de 2011
Respostas 6
Participantes 4