Abfrage in einer Tabelle über mehrere Felder

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage in einer Tabelle über mehrere Felder

    Hallo,

    ich hab ein Riesenproblem und blättere schon seit Stunden im Internet nach einer Lösung. :-(

    Folgendes Problem:

    Ich habe eine Tabelle mit 3 Feldern...

    Feld1|Feld2|Feld3
    10|3|mym
    20|3|umt
    30|3|uam
    10|4|aic
    20|4|dic
    30|4|der

    So, nun möchte ich mit _einer_ Abfrage als Trefferergebnisse alle Werte die im Feld2 mit der Zahl 3 ein "m" enthalten UND gleichzeitig alle Werte die im Feld2 mit der Zahl 4 ein "i" enthalten.

    Das heißt, als Ergebnis sollte 10,20 (Feld3) und 10,20 (Feld4) erscheinen, da diese beiden Paare 100%ig passen.
    30 (Feld3->30|3|uma) hat zwar ein "m" und entspricht dem Suchmuster, aber die weitere Bedingung, das der Wert der Zahl 4 auch ein "i" enthält, trifft nicht zu. (30|4|der)

    Ein

    SELECT * from `tttt` WHERE (`Feld2` = 3 AND `Feld3` LIKE '%m%') AND (`Feld2` = 4 AND `feld3` LIKE '%i%');

    funktioniert überhaupt nicht. Null Treffer.


    Ein

    SELECT * from `tttt` WHERE (`Feld2` = 3 AND `Feld3` LIKE '%m%') OR (`Feld2` = 4 AND `feld3` LIKE '%i%');

    bringt Treffer, nur eben leider auch das 30 (Feld3->30|3|uma), da es ja "Oder" die erste Bedingung immerhin erfüllt. Doch sollte das nicht als Treffer kommen, denn 30|4|der hat kein "i" im Feld.

    Das ganze sollte übrigens auch mit mehreren Werten funktionieren, denn im Feld2 kann ein Zahlenwert bis 26 stehen, was heißt, je genauer man die Suche definieren möchte, desto mehr dieser Feldpaare müssen für eine Trefferliste übereinstimmen.

    Hoffe, ich konnte erklären, wie das funktionieren soll und hoffe auch, das mir jemand weiterhelfen kann???

  • #2
    ich glaube nicht, dass du das mit einer query schaffst. man bräuchte mindestens unterausdrücke. doch bevor du mit dieser perversität beginnst, überdenke noch mal die struktur deiner tabelle und mache lieber zwei daraus.

    Kommentar


    • #3
      Hmmm... Es sind ja eigentlich zwei Tabellen.

      Die Grundidee habe ich von einem Forum-Script. Dort wird eine Tabelle benötigt, damit man variabel so viele Felder hinzufügen kann wie man braucht.
      Die Werte dieser Felder werden dann in die zweite Tabelle (die ich als Beispiel aufgeführt hatte) mit der ID im Feld02 geschrieben und zwar als Wert in das Feld03.
      Daher habe ich derzeit variabel 26 mögliche Felder. Müssen ja nie alle ausgefüllt sein.

      Wüsste nicht, wie ich die Tabelle umstricken soll?
      Für das Forum funktionierts ja einwandfrei, da ein bestimmter Wert ja entweder in der Überschrift oder im Text gesucht wird.

      Wie sollte ich die Tabelle denn anders aufbauen, wenn ich die Funktionalität nicht verlieren will, das man einfach mal eben ein neues Feld hinzufügen kann (auch von Leuten die noch weniger Plan als ich haben *g)?

      Kommentar

      Lädt...
      X