Abfrage der SQL-Zeilen, die NICHT (array-Werte) in ein Feld mit Komma getrennt Werte?
Ich habe eine SQL-Tabelle, die sieht wie folgt aus:
id_question (int) | tags (varchar)
wo "tags" - Feld
- leer : NULL
- oder ist gefüllt mit einem Wert (Ex: 1) (nicht numerisch)
- oder ist gefüllt mit mehreren durch Kommas getrennten Werten (ex: 273,2308,24) (nicht numerisch)
id_question (int) | tags (varchar)
1 | 1,373
2 | 283,4555,308,12
3 | 283,25,3
Und ich habe eine blacklisted_tags array.
Ich möchte zum abrufen id_questions aller Fragen, deren tags Feld nicht über eine Blacklist $tags_blacklist Wert.
Zum Beispiel:
$tags_blacklist = array (1,3)
=> ich sollte 2
und nicht 1, weil es 1 in die tags-Feld
und nicht 3, weil es 3 in seinem Feld tags eingeben.
Was sollte meine SQL-Abfrage Aussehen?
- erste Frage: können Sie renormalize, um eine richtige Struktur?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Datenbank-design gegen das Gesetz verstößt der Normalisierung #1: NIE SPEICHERN KOMMA-GETRENNTE LISTEN.
Was Sie haben sollten, ist vielmehr dies:
etc.
Diese Weise Ihre Abfrage wird so einfach wie
ersten Vorschlag, ändern Sie Ihre Tabellen, um die folgenden: