Выберите оператор в объединяющей таблице - PullRequest
0 голосов
/ 14 апреля 2011

Три таблицы, которые выглядят так:

PersonTable
Person.ID
Person.Name

PersonTypeCompositeTable
Person.ID
PersonType.ID

PersonTypeTable
PersonType.ID
PersonType.Category

В этом примере допустим, что значения PersonTypeCompositeTable:

1,A
2,A
3,B

Как мне написать оператор SELECT, который вернет всех людей с PersonType "A"?


ОБНОВЛЕНИЕ: (Рабочая версия ответа опубликована)

SELECT p.*
FROM PersonTable p
  INNER JOIN PersonTypeCompositeTable ptc
    ON p.ID = ptc.ID
  INNER JOIN PersonTypeTable pt
    ON ptc.ID = pt.ID
WHERE pt.Category = 'A'

1 Ответ

3 голосов
/ 14 апреля 2011

Вы используете объединяет между тремя таблицами.

SELECT p.*
FROM PersonTable p
  INNER JOIN PersonTypeCompositeTable ptc
    ON p.Person.ID = ptc.Person.ID
  INNER JOIN PersonTypeTable pt
    ON ptc.PersonType.ID = pt.PersonType.ID
WHERE pt.PersonType.Category = 'A'
...