php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.10.2005, 14:58  
Gast
 
Beiträge: n/a
Standard [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?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.10.2005, 15:39  
Gast
 
Beiträge: n/a
Standard

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.
  Mit Zitat antworten
Alt 19.10.2005, 16:08  
Gast
 
Beiträge: n/a
Standard

Meinst du wenn ich das Feld bereich1 in eine eigene Tabelle packe klappts?
  Mit Zitat antworten
Alt 19.10.2005, 17:38  
Gast
 
Beiträge: n/a
Standard

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
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] LEFT JOIN auf mehrere Spalten nystagmussen Datenbanken 3 22.07.2008 08:05
WHERE-Clause im Left Join cycap Datenbanken 2 06.11.2007 11:06
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
Left Join funktioniert nicht richtig, nicht alle Werte.... Gdriver PHP Tipps 2007 9 20.08.2007 15:56
LEFT OUTER JOIN auf Nicht-Tabelle inu Datenbanken 15 29.03.2007 20:21
[solved] LEFT JOIN - #1066 - Not unique table/alias moose Datenbanken 6 12.12.2006 06:41
[gelöst] LEFT JOIN und trotzdem nicht alle Sätze da?!? stefanjann Datenbanken 3 24.10.2006 11:32
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
Left outer join, timestamps php-newbie83 Datenbanken 29 27.04.2006 09:29
LEFT OUTER JOIN für mehr als 2 Tabellen ? Alpha Centauri Datenbanken 4 05.04.2006 16:18
Select Problem Datenbanken 17 16.01.2006 21:54
[Erledigt] LEFT JOIN Query Bildung Datenbanken 6 04.11.2005 15:24
[Erledigt] LEFT JOIN Problem Datenbanken 11 21.03.2005 16:36
[Erledigt] left outer join mit bedingung Datenbanken 2 04.03.2005 00:52
den letzte(grösten) eintrag aus LEFT JOIN Datenbanken 2 24.07.2004 18:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pho left join alle tabelle 1, left join geht mit php nicht, left join aus bestimmten bereich, left join like, left join where is not, left join funktioniert nicht richtig, left join mit count für ein feld, php, join, problem, vorname und nachname getrennt

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.