[MySQL] WHERE id != ?

groe

lo0l
ID: 134786
L
26 April 2006
224
16
Hi leute^^

ok mein Problem:
Habe die tabelle 'sperre' in der ein(!) feld(BLOB) ist - genannt 'ids'. In diesem Feld sind mehrere Zahlen - getrennt mit beistrichen dazwischen - gespeichert. Außerdem hab ich eine tabelle 'data' in der mehrere Datensätze mit verschiedenen ids gespeichert werden - klar ;)

Ich möchte nun eine SQL-Anfrage machen, in der mir nur Datensätze der Tabelle 'data' geliefert werden, deren IDs NICHT im feld 'ids' der tabelle 'sperre' vorkommen.

D.h. (Beispiel):
Tabelle data:
id text
1 bla
2 ble
3 bli
4 blo
5 blu

Tabelle sperre:
ids
1,2,5


Im Beispiel soll mir also nur datensatz 3 "bli" und datensatz 4 "blo" zurückgegeben werden. (Die gesperrten IDs sind aber nur in EINEM feld gespeichert!)

Natürlich könnte ich das nun auch mit einer schleife und einer endlos langen SQL-Abfrage lösen, aber das geht doch sicher auch einfacher!?
Gibt es denn einen SQL-Befehl der prüft ob in einem bestimmten feld eine bestimmer text vorkommt?

Ich hoffe ihr versteht was ich meine und könnt mir helfen...


LG
groe
 
Zuletzt bearbeitet:
groe schrieb:
[...]aber das geht doch sicher auch einfacher!?
Ja, die Datenbanknormalformen helfen dir dabei.

Zum Beispiel sollte nach diesen in einem Feld nur atomare Werte abgespeichert werden. Dagegen hast du schon mal verstoßen ;)

Du hast jetzt 2 Möglichkeiten:

a) lass deine DB-Struktur und verwende SUBSTRING etc. um alles als String zu verarbeiten (IDs als BLOB :roll:) oder

b) ändere die DB-Struktur und habs viel einfacher und v.a. auch besser für den Server.
 
sry, wusste nicht wofür BLOBs sind, PhpMyAdmin schlug mir die vor :oops: :ugly:

Nya ist ja auch etwas vereinfacht, die DB struktur die ich gepostet hab. In die tabelle 'sperre' kommen z.B. mehrere Einträge - eben für einzelne User ;)

Was schlägst du mir denn für ne Struktur vor?
 
groe schrieb:
PhpMyAdmin schlug mir die vor :oops: :ugly:
phpMyAdmin darfst du bei den Feldempfehlungen zu 0% vertrauen :mrgreen:
groe schrieb:
Was schlägst du mir denn für ne Struktur vor?
Auf jeden Fall eine normale, im wahrsten Sinne des Wortes.

Tabelle: Data
DataID INT
Text TEXT (kp, was da drin is, vielleicht auch größer/kleiner)
PRIMARY (DataID)

Tabelle: Sperre
UserID INT
DataID INT
PRIMARY (UserID, DataID)
 
theHacker schrieb:
Tabelle: Sperre
UserID INT
DataID INT
PRIMARY (UserID, DataID)

LOL, ok stimmt. man man man, dass ich da nicht draufgekommen bin, wollte mir wohlnur die ganzen vielen Einträge sparen :ugly: :mrgreen:

Dankeeee, für deine Hilfe. Ist geklärt :)
 
Zuletzt bearbeitet: