WHERE field IN (list)

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

  • WHERE field IN (list)

    Hi

    Ich suche oben genannte Abfrage nur umgekehrt. Gibt es diese Möglichkeit?

    Ich habe ein Feld in der Tabelle, in dem eine ID oder mehrere eingetragen sind. Mehrere IDs sind mit einem , getrennt. Dann habe ich eine ID. Umgekehrt gibt es zwar kein Fehler, aber es gibt mir auch keinen wert.
    SELECT * FROM table1 WHERE 26 IN (feld3)

    Wenn ich nun drei Einträge habe:
    feld1 | feld2 | feld3
    1 | Peter | 2
    2 | Hans | 5,2,6,26,30
    3 | Tim | 26

    So erhalte ich dann mit der obigen Abfrage die Zeile 3. Jedoch nicht die mit der 2. Gibt es da eine Möglichkeit?

    Eine Variante die ich gefunden habe:
    CONCAT(',' , feld3 , ',') LIKE '%,26,%'. Ggf gibt es noch andere?

    Gruss und Danke

    Koda
    Zuletzt geändert von Koda; 06.12.2013, 15:41.

  • #2
    5,2,6,26,30
    Ein Verstoß gegen die erste Normalform.
    Die 1. Normalform

    Definition:

    Ein Relationstyp ist in der 1. Normalform, wenn alle Attribute maximal einen Wert haben. Am Kreuzungspunkt einer Spalte mit einer Reihe darf also maximal ein Datenwert stehen. Das Nichtvorhandensein von Daten ist zulässig.

    Mit anderen Worten: Wiederholungsgruppen sind nicht erlaubt.
    Aus: Die 5 Normal Formen
    Wir werden alle sterben

    Kommentar


    • #3
      Mit FIND_IN_SET geht das – ist aber nicht besonders performant, und wie combie schon sagte sollte sowas in einem robusten Datenmodell i.a.R. gar nicht auftauchen.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar

      Lädt...
      X