Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] LEFT JOIN funtkioniert nicht richtig

Einklappen

Neue Werbung 2019

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

  • [Erledigt] LEFT JOIN funtkioniert nicht richtig

    Hallo

    Ich habe zwei Tabellen. Einmal die Tabelle "ehrenamtswegweiser" mit dem Feld "bereich1". Dieses Feld wird durch ein Formular mit Chekcboxen mit Tätigkeitsbereichen gefüllt. Wenn mehrere Checkboxen aktiviert wurden dann werden die jeweiligen Werte durch

    voneinander getrennt in diese Feld geschrieben (also ein Strin). So könnte z.B. ein gefülltes Feld ausssehen: Sport und Bewegung

    Gesundheit

    Nun habe ich noch eine zweite Tabelle "taetigkeitsbereiche" mit dem Feld "taetifkeitsbereich". Diese Tabelle ist mit allen möglichen Tätigkeitsbereichen gefüllt, hat also 14 Zeilen/Datensätze und wird nicht jehr verändert.

    Nun möchte ich herausbekommen wieviele Tätigigkeitsbereiche ausgewählt wurden und möchte alle auflisten und dahinter die Anzahl, auch wenn sie Null ist.

    Ich benutze folgende Query:

    SELECT t.taetigkeitsbereich, count( w.bereich1 ) AS anzahl
    FROM taetigkeitsbereiche t
    LEFT JOIN ehrenamtswegweiser w ON w.bereich1 LIKE '%t.taetigkeitsbereich%'
    GROUP BY t.taetigkeitsbereich
    ORDER BY anzahl DESC

    Leider listet er mir nur alle Tätigkeitsbereiche auf, aber in der anzahl - Spalte stehen nur Nullen.

    Wenn ich folgende Zeile der Anfrage so ändere:
    LEFT JOIN ehrenamtswegweiser w ON w.bereich1 = t.taetigkeitsbereich
    dann zählt er wenigstens die Tätigkeitsbereiche die einzeln in den Feldern stehen als nicht durch

    getrennt sind.
    Aber durch das LIKE und die anderen Operatoren sollte es doch eigentlich funtionieren oder nicht?

  • #2
    Hi,

    also ich denke du solltest deine Datenbankstruktur ändern.
    Es ist besser, wenn du aus der Tabelle "ehrenamtswegweiser" das Feld "bereich1" entfernst.
    Stadtdessen erstellst du eine neue Tabelle "ehrenamtswegweiser_taetigkeit".
    In dieser Tabelle speicherst du die zurodnung, welcher ehrenamtswegweiser welchen Tätigkeiten zugewiesen ist (eine 1-N-Verknüpfung)
    Der Aufbau der Tabelle wäre etwa so:

    id | ehrenamtlicher_id | taetigkeits_id


    So kannst du dann sehr einfach alle Taetigkeiten auslesen, die einem bestimmten Ehrenamtlichen zugeordnet sind.

    Kommentar


    • #3
      Meinst du wenn ich das Feld bereich1 in eine eigene Tabelle packe klappts?

      Kommentar


      • #4
        matthi, ich glaube BennySHS meinte das nicht genau so.

        In dieser zusaetzlichen Tabelle sollen nicht die jetzigen Inhalte von bereich1 sein. Stattdessen sollen dort die Verbindungen zwischen den Ehrenamtlichen und den Taetigkeiten sein.
        Du benoetigst dazu in deinen Tabellen noch eine Spalte 'id'.

        Code:
        Tabelle 1: Ehrenamtliche (Beispiel)
        id | Vorname | Nachname
        1    John          Smith
        2    Heinrich     Langer
        
        Tabelle 2: Taetigkeitsbereiche
        id | Bereich
        1    Gesundheit
        2    Sport und Bewegung
        
        Tabelle 3: Ehrenamtliche_Taetigkeitsbereiche
        ehrenamt_id | taetigkeits_id
           1                     2
           2                     1
           2                     2
        Gemaess obiger Tabelle Nr. 3 ist John nur im Bereich Gesundheit und Heinrich in beiden Bereichen taetig.

        So muesste die Tabellenstruktur aufgebaut werden. Danach ist dein Problem einfacher zu loesen.

        Gruss,
        Janosh

        Kommentar

        Lädt...
        X