| 

.NET C# Java Javascript Exception

2
Hallo

Ich habe eine Datenbank, durch das CMS/Modul ein Feld vom Typ BLOB (falls es hilft wäre eventuell auch Typ Text möglich).
Dort ist ein Array drin mit verschiedenen IDs.

Meine Abfrage:
'SELECT * FROM produkte WHERE kategorie LIKE "%75%"';

Allerdings erhalte ich die Ergebnisse ebenso mit:
'SELECT * FROM produkte WHERE kategorie LIKE "%7%"';


Zeigt mir die richtigen Werte an. ABER suche ich nach %7% wird mir ebenso alles mit der 75 angezeigt, dies möchte ich natürlich nicht. Jemand eine Idee? Ohne %% funktioniert es leider nicht.

Es muss ein Array bleiben in der Datenbank.
News:
04.11.2015
meone 110 1 6
meone 110 1 6
Für so eine Problematik fällt mir (insbesondere auch in Unkenntnis Deiner Daten) spontan mal ein RegEx ein, das ist aber ein etwas schwierigeres und langsameres Unterfangen.
muffi 04.11.2015
Im Feld kategorie liegt ein Array (Typ Blob, könnte auf Text ändern)...

[kategorie] => Array([0] => 75
[1] => 613)
Können 1 bis 10 Einträge sein.
In der Tabelle produkte sind ca. 300 Einträge.

Es sind immer zahlen, 1 bis 4 Stellig. Somit darf mit 5 nicht 75 gefunden werden.

Da am Tag ca 10.000 Page Views statt finden sollte es natürlich nicht zu langsam sein.
Habe es vorerst so gelöst:
pageID='75';
$sql .= ' AND (kategorie LIKE "%\"'.$pageID.'\"%" OR kategorie LIKE "%:'.$pageID.';%")';


Geht aber sicher besser :-(
meone 04.11.2015
Gehe ich recht in der Annahme, dass deine Spalte Kategorien die IDs der Kategorien enthält zu denen das Produkt gehört? Wäre es dann nicht eleganter das ganze über eine Verknüpfungstabelle zu realisieren?
phg 04.11.2015
Wenn Du das auf Text ändern kannst und die Felder immer die gleiche Breite haben, kannst Du evtl. mit MID(kathegorie,1,4) like '"%7%"' usw. arbeiten. Das ist geschwindigkeitsmäßig auch gut.
muffi 05.11.2015
Klar Verknüpfungstabelle wäre am einfachsten, ist aber ein CMS Modul was mir nur eine Tabelle zur Verfügung stellt.

"Felder immer die gleiche Breite haben" - das verstehe ich nicht. Wie mein Array aussieht habe ich oben geschrieben, IDs sind 75 und 613, die Zeichenlänge ist somit immer unterschiedlich und auch die Anzahl der Einträge im Array.
meone 05.11.2015
1 Antwort
0
(verklickt, hier sollte nichts erscheinen)
04.11.2015
meone 110 1 6
meone 110 1 6

Stelle deine Php-Frage jetzt!