Nanaki
Erfahrenes Mitglied
Hallo zusammen,
ich habe folgende MySQL-Tabelle:
Von dieser Tabelle möchte ich nun sämtliche userId´s auswählen, welche nicht die categoryId 1 und 3 besitzen. Sprich, als Ausgabe sollte in diesem Fall nur die userId 2 und 4 ausgegeben werden.
Meine bisherigen Versuche die Anzahl der Datensätze mit und ohne der categoryId 1 und 3 zu vergleichen, waren bisher leider erfolglos. Gibt es keine Möglichkeit die Datensätze zu kombinieren und dann über die WHERE-Bedingung die ungewünschten Kategorien auszublenden?
In etwa wie in diesem Beispiel:
Ich bin für jeden Tipp dankbar. Falls ihr selbst etwas herumprobieren wollt, hier ist meine Test-Tabelle:
ich habe folgende MySQL-Tabelle:
Code:
| userId | categoryId |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 3 |
| 4 | 2 |
| 4 | 3 |
| 4 | 4 |
Von dieser Tabelle möchte ich nun sämtliche userId´s auswählen, welche nicht die categoryId 1 und 3 besitzen. Sprich, als Ausgabe sollte in diesem Fall nur die userId 2 und 4 ausgegeben werden.
Meine bisherigen Versuche die Anzahl der Datensätze mit und ohne der categoryId 1 und 3 zu vergleichen, waren bisher leider erfolglos. Gibt es keine Möglichkeit die Datensätze zu kombinieren und dann über die WHERE-Bedingung die ungewünschten Kategorien auszublenden?
In etwa wie in diesem Beispiel:
SQL:
SELECT userId FROM test WHERE categoryId NOT IN(1,3) GROUP BY userId
Ich bin für jeden Tipp dankbar. Falls ihr selbst etwas herumprobieren wollt, hier ist meine Test-Tabelle:
SQL:
CREATE TABLE IF NOT EXISTS `test` (
`userId` int(11) NOT NULL,
`categoryId` int(11) NOT NULL,
KEY `userId` (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
INSERT INTO `test` (`userId`, `categoryId`) VALUES
(1, 1),
(1, 2),
(1, 3),
(1, 4),
(2, 2),
(2, 3),
(3, 1),
(3, 3),
(4, 2),
(4, 3),
(4, 4);
Zuletzt bearbeitet von einem Moderator: