SQL - поиск внутреннего соединения только с одним конкретным типом - PullRequest
0 голосов
/ 16 октября 2018

В моей базе данных есть пара таблиц (A, B).Они 1-н отношения;каждый A может иметь N B.Вот псевдоструктура B:

B.id , B.type , B.foreign_key(for communication between A and B), B.price

B.type может быть между 1-8, но я хочу просто найти A с одной и только одной B-записью с 2 (значение B.type)

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

enter image description here

Однако я отслеживаю этот результат:

enter image description here

Я написал этот запрос, но он не завершен.Я имею в виду, что некоторые Aid имеют другой тип B, значение которого не равно 2, но это не мой конечный результат.

SELECT B.id AS Bid. B.type AS Btype , A.id AS Aid
FROM A
INNER JOIN B ON A.id = B.foreign_key
WHERE B.B.type = 2

Любое предложение?

1 Ответ

0 голосов
/ 16 октября 2018

Может быть, это то, что вы ищете.Надеюсь, поможет.

 select b.id as bid
      , b.type as btype 
      , a.id as aid
      , count(*) 
   from a
  inner join b on a.id = b.foreign_key
  where b.type = 2
  group by b.id, b.type, a.id
 having count(*) = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...