Запрос к таблице с составным первичным ключом - PullRequest
3 голосов
/ 20 апреля 2011

У меня есть таблица с составными первичными ключами.Это таблица перекрестных ссылок и выглядит следующим образом

Table 
ID    Relationship             ID2
1     Spouse                   10
2     Employee                 20
2     Former Employee          20
3     Former Employee          30
4     Child                    40

Я пытаюсь написать запрос, в котором совпадает ID2, у вас есть сотрудник и бывший сотрудник с одинаковым идентификатором

ID    Relationship             ID2
2     Employee                 20
2     Former Employee          20      

Оценителюбая помощь !!

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

В Oracle, SQL Server и PostgreSQL:

SELECT  *
FROM    (
        SELECT  t.*,
                COUNT(*) OVER (PARTITION BY id, id2) AS cnt
        FROM    mytable t
        WHERE   relationship IN ('Employee', 'Former Employee')
        ) q
WHERE   cnt = 2

Кроссплатформенная версия:

SELECT  t.*
FROM    (
        SELECT  id, id2
        FROM    mytable
        WHERE   relationship IN ('Employee', 'Former Employee')
        GROUP BY
                id, id2
        HAVING  COUNT(*) = 2
        ) q
JOIN    mytable t
ON      t.id = q.id
        AND t.id2 = q.id2
        AND t.relationship IN ('Employee', 'Former Employee')
0 голосов
/ 20 апреля 2011
select * from table where ID2 in (
   select ID2 from table where count(ID2) > 1) t
order by ID2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...