Mein Verständnis, dass mit "c" du meintest "ich" und mit "d" du meinst "f"
Unten tut dies.
Es identifiziert die Prod, die in "i" Gruppe sind, aber nicht in "f" Gruppe
SELECT Prod
FROM (
SELECT Prod,
CONCAT('|', GROUP_CONCAT_UNQUOTED(group, '|'), '|') AS list
FROM YourTable
GROUP BY Prod
)
WHERE list CONTAINS '|i|'
AND NOT list CONTAINS '|f|'
Sie können dies mit testen unter
SELECT Prod
FROM (
SELECT
Prod,
CONCAT('|', GROUP_CONCAT_UNQUOTED(group, '|'), '|') AS list
FROM
(SELECT 'prod1' AS Prod, 'i' AS group),
(SELECT 'prod1' AS Prod, 'f' AS group),
(SELECT 'prod1' AS Prod, 'f' AS group),
(SELECT 'prod2' AS Prod, 'i' AS group),
(SELECT 'prod3' AS Prod, 'i' AS group),
(SELECT 'prod4' AS Prod, 'i' AS group),
(SELECT 'prod4' AS Prod, 'f' AS group),
(SELECT 'prod4' AS Prod, 'f' AS group),
(SELECT 'prod4' AS Prod, 'f' AS group),
GROUP BY Prod
)
WHERE list CONTAINS '|i|'
AND NOT list CONTAINS '|f|'
so letzte Abfrage Sie so etwas wie
aussehen kann
SELECT <list of needed fields>
FROM YourTable
WHERE Prod IN (
SELECT Prod
FROM (
SELECT Prod,
CONCAT('|', GROUP_CONCAT_UNQUOTED(group, '|'), '|') AS list
FROM YourTable
GROUP BY Prod
)
WHERE list CONTAINS '|i|'
AND NOT list CONTAINS '|f|'
)
abouve Abfrage war sehr nützlich bei der Konstruktion, was ich wollte. Vielen Dank – rbkk2016