Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Abfrage nach enthaltenem Wert

Einklappen

Neue Werbung 2019

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

  • MySQL Abfrage nach enthaltenem Wert

    Hallo liebe Forenmitglieder!

    Mein ganzes Vorhaben zu schildern würde deutlich zu lange dauern, deshalb schreib ich erstmal nur das folgende Szenario, ich hoffe ihr verzeiht mir das

    User-Tabelle:

    uid | username | weiter Felder | Berechtigungsgruppen
    =============================================
    1 | max | beliebiger inhalt | 1,2,4,7
    2 | moritz | beliebiger inhalt | 1,3,6,7
    3 | test | beliebiger inhalt | 2,4,9
    4 | max | beliebiger inhalt | 3,5,12,13


    Ich weiß ich könnte die Berechtigungsgruppen auch einfach mit einer extra Tabelle den User zuweisen (m zu n - Beziehung oder wie man das nennt) aber gibt es eine Möglichkeit z.B. alle User auszugeben bei denen das Array (String) in der Spalte "Berechtigungsgruppen" z.B. die Nummer 7 enthält?


  • #2
    PHP-Code:
    LIKE '%7%' // findet sogar die 17 :) 
    Ist aber schlecht, mucho. Wie du selbst sagst, eine Zuordnungstabelle ist der richtige Weg.
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar


    • #3
      OK das is dann wirklich nicht gut^^ Dann eben doch mit Zuordnung.

      Trotzdem Danke!!

      Kommentar


      • #4
        Code:
        SELECT
            *
        FROM
            User
        WHERE
            FIND_IN_SET(7, Berechtigungsgruppen);
        Sucht in der Spalte Berechtigungsgruppen die eine kommaseparierte Liste ist, die 7. Ob das bei mehreren Einträgen in sinnvoller Geschwindigkeit funktioniert, kann ich jetzt nicht sagen.

        Kommentar


        • #5
          Vielen Dank für deine Antwort!

          Funktioniert perfekt! Schlimmsten Falls muss ich einfach ne Ajax Nachladefunktion einbaun, wenns zu langsam wird oder aller schlimmsten Falls eben doch auf die Zuordnungstabelle umsteigen.

          Kommentar


          • #6
            Ist aber keine perfekte Lösung!

            Behebe dein Normalisierungsproblem in der Datenbank, aka das da:
            1,2,4,7
            Goldene Regel: Nur eine Information pro Feld.
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Zitat von lstegelitz Beitrag anzeigen

              Goldene Regel: Nur eine Information pro Feld.
              Depends. In PostGIS kann man 2,3 und 4-dimensionale Daten in einem Feld speichern, mit RANGE-Typen speichert man von und bis sowie die Information, ob die Grenzen inklusive oder exclusive sind. In der Mathematik gibt es übrigens auch komplexe Zahlen, geometrische Gebilde beinhalten u.U. eine Vielzahl von Einzelpunkten, ...
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar

              Lädt...
              X