AND statt OR beutzen

PHP-Fan

Erfahrenes Mitglied
Hallo,

ich habe mal wieder einen kleinen Logikfehler in meiner Datenbankstruktur.

Tabellenspalten:

Code:
gameid, catid

Nun ist es so aufgebaut, dass ein Spiel in mehrere Kategorien passt. Ich baue dazu mal eine Beispieltabelle:

Code:
gameid, catid
100, 5
100, 6
100, 12
100, 16
200, 1
200, 5
200, 6
300, 6
400, 2

So speichere ich die Daten aktuell ab. Nun habe ich aber das Problem, dass wenn ich mir nur Spiele anzeigen will die in der catid 5 und 6 ich diese mir nicht anzeigen lassen kann weil in der Strukur nur mit OR gearbeitet werden kann. Wie kann ich die Tabelle ressourcenschonend anlegen? Ich hoffe ihr könnt mehr helfen und versteht mein Anliegen.

Beispiel meines Problems:

Code:
SELECT `gameid` FROM `table` WHERE `catid` = 5 OR `catid` = 6 GROUP BY `gameid`

Ergebnis:

Code:
gameid
100
200
300

gameid 300 wird auch angezeigt, weil eben nach 5 ODER 6 gefragt wird. mit UND würde ich keine Ergebnisse halten. Die Frage ist wiegesagt wie ich meine Tabelle anders anlege...

Vielen Dank!
 
Zuletzt bearbeitet:
Anstelle des OR kannst du aich IN verwenden. Ist ein wenig einfacher.

Also, das ganze mit IN nach catid filtern. Dann nach gameid gruppieren und zählen ob auch wirklich 2 unterschiedliche Einträge gefunden wurden

SQL:
SELECT
	gameid,
FROM
	mytable
WHERE
	catid IN(5, 6)
GROUP BY
	gameid
HAVING
	COUNT(DISTINCT catid) = 2
 
Zuletzt bearbeitet von einem Moderator:
Zurück