У меня есть таблица, в которой я связываю элементы с типами, где каждый тип может иметь несколько категорий. Для каждой комбинации типа и категории должен быть связан только один элемент. Однако из-за какой-то моей прошлой ошибки проскочили некоторые дубликаты. Сейчас я пытаюсь написать запрос, который даст мне дубликаты, но я не очень хорошо работаю, иначе я бы явно не публиковал здесь сообщения.
SELECT
item_id,
type_id,
category
FROM itemTypes
WHERE category = 'cat1'
GROUP BY type_id
HAVING COUNT(*) >= 2;
Это то, что я пробовал. Он действительно работает и дает мне type_ids, которые связаны с разными элементами. Но каждый type_id должен быть связан только с одним элементом. В этом списке не отображаются связанные элементы. И это как раз то, что я хотел бы знать.
Кто-нибудь может мне помочь?
Ниже представлен образец данных. Как видите, type_id 5 и 6 связаны несколько раз. В результате я бы хотел получить только эти записи.
| id | item_id | type_id | cat |
+-------+-----------+-----------+-----------+
| 1 | 100 | 5 | cat1 |
| 2 | 110 | 5 | cat1 |
| 3 | 115 | 6 | cat1 |
| 4 | 120 | 7 | cat1 |
| 5 | 125 | 5 | cat1 |
| 6 | 130 | 6 | cat1 |
| 7 | 135 | 4 | cat1 |
| 8 | 140 | 8 | cat1 |






Вам необходимо присоединить вашу таблицу itemTypes к текущему запросу, перефразированному как подзапрос:
SELECT t1.*
FROM itemTypes t1
INNER JOIN
(
SELECT item_id
FROM itemTypes
WHERE category = 'cat1'
GROUP BY item_id
HAVING COUNT(*) > 1
) t2
ON t1.item_id = t2.item_id;
Логическая проблема с вашим текущим запросом заключается в том, что он может найти только значения item_id, которые соответствуют вашим критериям, но не другие значения столбца.
Это именно то, что я искал. Ты спасатель. Благодарю.
обновите свой вопрос и добавьте правильный образец данных