@Apxu

Как написать сложный SLQ запрос?

da9db89c35f64d07b1b154a520cfac0f.jpg

Есть 3 таблицы:
1. Таблица с картами
2. Таблица с колодами
3. Таблица которая связывает карту с колодой

Например в таблице card 4 элемента:
id-1
id-2
id-3
id-4

в таблице deck 2 элемента:
id-1
id-2

и в таблице deck_card 6 элементот
id-1, card_id-1, deck_id-1
id-2, card_id-2, deck_id-1
id-3, card_id-3, deck_id-1

id-4, card_id-2, deck_id-2
id-5, card_id-3, deck_id-2
id-6, card_id-4, deck_id-2

Необходим такой запрос, в который будет передаваться несколько id карт - например 2 и 3 (они присутствуют в обоих колодах) и он будет возвращать id колоды(deck.id).
Простыми словами - чтобы проверялась промежуточная таблица и если у набора с id-2 есть элементы с card_id - 2 И card_id -3 , то возвращался deck_id.
Извините если не грамотно написал. :|
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `deck_id`
  FROM `deck_card`
  WHERE `card_id` IN (2, 3)
  GROUP BY `deck_id`
  HAVING COUNT(*) = 2

Предполагается, что пары (`deck_id`, `card_id`) уникальны.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Необходим такой запрос, в который будет передаваться
В запрос ничего не передаётся. Есть запросы с параметрами. Определитесь.
SELECT DISTINCT id_desc FROM desc_card WHERE id_cart IN (2,3)

потому что у 1го набора карты 4 нет

SELECT DISTINCT id_desc FROM desc_card WHERE id_cart = 4
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы