Извиняюсь, если это было задано, но, может быть, я не знаком с языком, чтобы спросить, что я хочу, и я просмотрел десятки других вопросов, но, похоже, не нашел, что работает.
Я работаю над инструментом для торговой карточной игры, колода - это список карт, у меня есть отображение таблицы deckId
на cardId
Учитывая пример (rowid не показано)
deckId| cardId
-----------
1 | 321
1 | 50
1 | 100
1 | 125
2 | 321
2 | 50
2 | 99
2 | 87
3 | 50
3 | 12
3 | 5
3 | 47
4 | 999
4 | 998
4 | 997
4 | 996
Я пытаюсь выполнить запрос для каждой колоды, сколько карт у нее в одной колоде.
deckId | count(cardId)
--------------------
1 | 2 // 321 and 50 appear in both deckId=1 and deckId=2
2 | 2 // 321 and 50 appear in both deckId=1 and deckId=2
3 | 1 // 50 appears in deckId=2 and deckId=3
4 | 0 // none of the cards in deckId=4 appear in any other decks
Я пробовал
SELECT deckId, COUNT(cardId)
FROM table
GROUP BY deckId
но это просто дает мне (потому что в каждой колоде по 4 карты):
deckId | count(cardId)
-----------------------
1 | 4
2 | 4
3 | 4
4 | 4
Итак, как мне запросить каждую колоду, сколько у нее «общих» карт? ? (были предложены оконные функции, но я вынужден использовать SQLite версии 3.24, прежде чем оконные функции будут реализованы)