MySQL присоединяется, расширяя результат - PullRequest
0 голосов
/ 05 июля 2018

У меня есть две таблицы

Table name: place
Columns: placeid, name
Data: 1, My Favourite Donut Place

Table name: category
Columns: categoryid, name, placeid
Data: 1, Donuts, 1
      2, Coffee, 1
      3, Hot Chocolate, 1

Я присоединяюсь к двум следующим образом:

 select p.name as place, c.name as category from place p join category c on p.placeid=c.placeid

И получился бы такой результат:

place                     category
My favourite donut place  Donuts
My favourite donut place  Coffee
My favourite donut place  Hot Chocolate

Теперь я хочу найти места, где подают кофе:

select p.name as place, c.name as category from place p join category c on p.placeid=c.placeid where c.name = 'Coffee'

Результат, подобный этому:

place                     category
My favourite donut place  Coffee

Но я все еще хочу показать все разные категории для «Моего любимого пончика», где подают кофе, то есть «Пончики» и «Горячий шоколад» тоже.

Каков наилучший способ достичь этого?

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете просто сделать второе объединение мест в категории, чтобы получить все категории, хотя порядок объединения не имеет большого значения в этом случае, я считаю, что этот порядок делает его более понятным.

SELECT p.name AS place, placeCategories .name AS category 
FROM category AS filterCategory 
INNER JOIN place AS p ON filterCategory.placeid=p.placeid 
INNER JOIN category AS placeCategories ON p.placeid=placeCategories.placeid 
WHERE filterCategory.name = 'Coffee'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...