Mehrere Positionen in einer Spalten abfragen
berd
- datenbank
0 wahsaga0 Frank (no reg)0 berd0 Sven Rautenberg0 berd
Hallo zusammen,
in mysql 5.0.32 habe folgendes Problem, in der Tabelle "myTab1" sind folgende Spalten:
Tabellen Bsp.
id eigen_id value0
1 4 text1
2 3 text11
3 12 text---
4 6 text66b
5 40 text_text
5 1 textAA
In der Webseite kann ein User über Checkbox nach Inhalten suchen die in der Tabelle "myTab1" vorhanden sind, der value des Checkbox ist der Wert in der Spalte "eigen_id".
Es kommt öffter vor das mehrere Checkboxs angeklickt sind und es sollen nur die Inhalte aus der Spalte "value0" angezeigt werden, deren Werte über die Checkbox angeklickt worden sind.
Wie kann ich das lösen?
Selber habe ich versucht mit "eigen_id IN (4, 3, 40)" aber es funktioniert wie "OR" was ist nicht der Sinn der Sache, denn ich möchte nicht nur die die Werte haben wenn ein Wert vorkommt sondern es muss die Bedingung erfühlt werden, dass es nur die Werte angezeigt werden sollen, die der User angeklickt hat.
grüße berd
hi,
Selber habe ich versucht mit "eigen_id IN (4, 3, 40)" aber es funktioniert wie "OR" was ist nicht der Sinn der Sache,
Was denn sonst?
Wenn der Nutzer die Checkboxen 3, 4 und 40 markiert hat, dann willst du doch wohl die Datensätze mit den Eigen-IDs 3, 4 oder 40 haben - oder etwa nicht?
denn ich möchte nicht nur die die Werte haben wenn ein Wert vorkommt sondern es muss die Bedingung erfühlt werden, dass es nur die Werte angezeigt werden sollen, die der User angeklickt hat.
Deine Orthographie und Ausdrucksweise macht es ziemlich schwierig zu verstehen, was du eigentlich willst. Geht das vielleicht noch mal etwas strukturierter?
gruß,
wahsaga
Hi,
du möchtest dann vielleicht lieber eine "AND" Verknüpfung vornehmen?
Könntest du dein Problem nochmal etwas ausführlicher beschreiben, es liest sich immer noch sehr kryptisch. Z.b. in der folgenden Form:
Das ist z.b. eine Checkbox im übertragenen Sinne
[ ] Wert 3
[X] Wert 4
[ ] Wert 0815
Danke,
Frank
Hallo,
ja mache und Entschuldigung, für die Ausdrucks weise, ich bin unter Druck.
"du möchtest dann vielleicht lieber eine "AND" Verknüpfung vornehmen?"
Falls das gehen würden, würde ich gerne erfahren wie.
text1, text11, text_text und nichts anders.
"Das ist z.b. eine Checkbox im übertragenen Sinne", ich erweitere sie um mein Bsp.
[X] Wert 4
[x] Wert 3
[ ] Wert 12
[ ] Wert 6
[X] Wert 40
[ ] Wert 1
Es sind nur die Checkbox angeklickt worden, die die Werte 4, 3, 40 haben
Danke berd
Moin!
Klickt der User auf der Seite die Boxen 4, 3, 40 soll die Query folgende Werte liefern
text1, text11, text_text und nichts anders.
Genau das geht aber nicht mit AND, sondern nur mir OR - bzw. eben IN.
SELECT wasauchimmer FROM tabelle WHERE eigen_id IN (4, 3, 40);
Das ergibt bei deiner Datenstruktur dann drei Datensätze, die du auslesen und entsprechend deinen Wünschen behandeln mußt.
Mußt halt die Werte in IN dynamisch zusammensetzen - und daber bitte nicht vergessen, streng zu prüfen, ob du da tatsächlich Integer-Werte reinsetzt, oder ob ein böser Angreifer dir evtl. SQL-Injection unterjubeln will!
- Sven Rautenberg
hallo,
Klickt der User auf der Seite die Boxen 4, 3, 40 soll die Query folgende Werte liefern
text1, text11, text_text und nichts anders.
Genau das geht aber nicht mit AND, sondern nur mir OR - bzw. eben IN.
SELECT wasauchimmer FROM tabelle WHERE eigen_id IN (4, 3, 40);
Das habe ich auch schon versucht und mit dem Ergebnis wahr ich unzufrieden :-(
Kann ich eventuell mit "unter Querys" arbeiten um das gewünschte Ergebnis doch noch "hinzu biegen"?
grüße berd
Hello,
Kann ich eventuell mit "unter Querys" arbeiten um das gewünschte Ergebnis doch noch "hinzu biegen"?
ja - sofern dein DBMS das mitspielt. Entweder mit Unterabfragen oder mit Joins. Im Archiv gabs mal von Vinzenz eines Lösung mit Joins, wenn ich mich recht erinnere, eine andere gibts von mir, aber die setzt voraus, dass du die Checkboxen eindeutig identifizieren kannst und die Anzahl der ausgewählten Werte kennst. Dann geht das schematisch etwa so:
SELECT id
FROM table
WHERE eigen_id IN (4, 3, 40)
GROUP BY id
HAVING COUNT(*) = 3
^^^ diese 3 entspricht der Anzahl der Kriterien im IN
-> Erläuterung der Funktionsweise:
MfG
Rouven
Moin!
hallo,
Klickt der User auf der Seite die Boxen 4, 3, 40 soll die Query folgende Werte liefern
text1, text11, text_text und nichts anders.
Genau das geht aber nicht mit AND, sondern nur mir OR - bzw. eben IN.
SELECT wasauchimmer FROM tabelle WHERE eigen_id IN (4, 3, 40);
Das habe ich auch schon versucht und mit dem Ergebnis wahr ich unzufrieden :-(
Wie schon erwähnt: Zeige deine Datentabelle (beispielhaft), und zeige deine gewünschte Ergebnistabelle. Nur dann kann man dir einen passenden Query basteln.
Kann mir aber eigentlich nicht vorstellen, dass man mit der passenden Textausgabe NICHT das hinkriegt, was du willst.
- Sven Rautenberg