Re:duvida com select

8 respostas
peczenyj

Acho que entendi o problema (espero)

a tabela a possui um campo id_B, que é o id de um registro na tabela B.

SELECT id_B FROM table_A GROUP BY id_B HAVING count(id_B) = 2

http://www.w3schools.com/sql/sql_groupby.asp

8 Respostas

mueller

infogod:
Salve galera guj,

Tenho uma duvida, mas primeiro deixa eu explicar a situação primeiro:

Existem duas tabelas X e Y o relacionamento para as duas é 1:N , onde X pode ter varios Y, sendo a PK de x estando em Y como eu posso identificar q um Y esta pra 2 X diferentes?

Att,
José Carlos.

Deixa eu ver se entendi direito, pela explicação no outro post seu, vc quer identificar que um Y está para o mesmo X em duas linhas, é isso? E não o mesmo Y para 2 valores de X, certo?

mueller

Bem, acho que ele então já respondeu, de qualquer forma acho que o sql abaixo resolve

select a.x, a.y from tabela_com_X_e_Y a, tabela_com_X_e_Y b where a.y = b.y and a.x <> b.x;
peczenyj

Bom, vou contribuir ja que o assunto continua.

Na verdade eu ainda estou com dúvidas sobre a descrição das tabelas.

Partindo desse exemplo:

tabela A:
id
id_B

tabela B:
id

Posso encontrar os IDS da tabela B repetidos 2 vezes na tabela A assim:

SELECT id_B
FROM table_A
GROUP BY id_B
HAVING count(id_B) = 2

E posso descobrir quais são os itens em A que tem esse item em B em comum de duas formas:

Forma 1

SELECT A., B.
FROM table_A A, table_B B
WHERE A.id_B = B.id
AND B.id IN (
SELECT id_B FROM table_A
GROUP BY id_B HAVING count(id_B) = 2
)

Forma 2

SELECT A1., A2., B.*
FROM table_A A1, table_A A2, table_B B
WHERE A1.id <> A2.id AND
A1.id_B = B.id AND
A2.id_B = B.id

como fazem ANOS que eu não trabalho com SQL, posso ter cometido alguns enganos.

[]´s Tiago

bandrade

Se nao pode acontecer, qp simplesmente nao deixa o banco cuidar disso? Cria uma constraint ai…

I

Salve galera guj,

Tenho uma duvida, mas primeiro deixa eu explicar a situação primeiro:

Existem duas tabelas X e Y o relacionamento para as duas é 1:N , onde X pode ter varios Y, sendo a PK de x estando em Y como eu posso identificar q um Y esta pra 2 X diferentes?

Att,
José Carlos.

I

Obrigado pelo retorno, mas é algo um pouco mais complicado que isso:

Tabela Y tem a PK da tabela X entao pode acontecer isso:
y x
1, 1
2, 1
3, 1
1, 1

Ele pode acontecer de repetir o que nao pode acontecer é o caso abaixo
y x
1, 1
2, 1
1, 2

Viu aqui o problema 1 esta associado a x1 e x2.

I

Mueller,

o peczenyj  (esqueci de perguntar seu nome) me ajudou por mp, estou testando os selects e modificando para atender minha necessidade.. mas eu problema é descobrir 1 um y esta pra 2 x diferentes, pq isso não pode acontecer.

Att,
José Carlos.

I

agradeço pela atenção de todos, vou testar as querys citadas e posto logo q eu conseguir uma solução.

Abraços.

Criado 18 de outubro de 2007
Ultima resposta 18 de out. de 2007
Respostas 8
Participantes 4