Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 21-05-2010, 12:12
smyl
 Registrierter Benutzer
Links : Onlinestatus : smyl ist offline
Registriert seit: Sep 2002
Ort: Seeheim
Beiträge: 61
smyl ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke, denke konzeptionell habe ich es. Mal sehen, ob auch die Integration zum gewünschen Ergebnis führt.



Klar: Gibt einen Grund, weshalb das Thema "JOINS" fixiert ist. Also eine kleine Entschuldigung dafür, dass ich dem Artikel nicht die nötige Aufmerksamkeit geschenkt habe. Quadrate und Wurzeln sind etwas abgeschreckend ;-)

Im Laufe der Nutzung hat sich bei mir ein Folgeproblem ergeben für das ich bisher keine Lösung gefunden habe.

Ursprungsproblem:

Es gibt folgende Tabellen:
Personen (personen_id / name)
Eventteilnehmer (id / personen_id)

Ausgangssituation
: In der Tabelle Eventteilnehmer befindet sich ein Teil der Personen (verknüpft über personen_id).

Problem (Ziel): Ich möche jetzt herausfinden welche Personen noch nicht als Eventteilnehmer feststehen. Also sich noch nicht in Eventteilnehmer befinden

Lösung

PHP-Code:
SELECT Personen.name
FROM Personen
LEFT JOIN Eventteilnehmer USING 
(personen_id)
WHERE  Eventteilnehmer.personen_id IS NULL 
Folgeproblem:

Beide meine Tabellen haben jetzt zusätzliche Attribute. Eventteilnehmer können männlich oder weiblich sein. In der Tabelle Eventteilnehmer werden außerdem Eventteilnehmer für verschiedene Events aufgeführt.

Es gibt also folgende Tabellen:
Personen (personen_id / name / geschlecht [1/2])
Eventteilnehmer (id / personen_id / event_id)
Problem (Ziel): Ich möche jetzt herausfinden welche Männer (geschlecht=1) noch nicht als Eventteilnehmer bei einem bestimmten Event feststehen.

Folgende Abfrage führt leider nicht zum Ziel

PHP-Code:
SELECT Personen.name
FROM Personen
LEFT JOIN Eventteilnehmer USING 
(personen_id)
WHERE  Eventteilnehmer.personen_id IS NULL
AND Eventteilnehmer.event_id='1'
AND Personen.geschlecht='1' 
Mir ist bewusst, dass das Problem bei Eventteilnehmer.event_id='1' liegt, aber welchen Lösungsweg gibt es?



Ok, habe (glaube ich) die Lösung .

Einfach nach dem Stil:

PHP-Code:
LEFT JOIN table_name2
ON table_name1
.column_name=table_name2.column_name AND .... 
So passt das.

Geändert von AmicaNoctis (26-05-2010 um 02:05 Uhr) Grund: Mehrfachposting
Mit Zitat antworten