Fehlende Einträge (hier: Personen) finden

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

  • Fehlende Einträge (hier: Personen) finden

    Hallo,

    ich würde mich über eine kurze Hilfe freuen. Zur Illustration meines Problem das folgende Beispiel:

    Es gibt folgende Tabellen:
    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

    Zusatz: Mir ist bewusst, dass das Ganze über eine Schleife problemlos lösbar ist. Allerdings suche ich ein Weg, der etwas schneller und Performance-freundlicher ist. Abfrage findet recht häufig statt und sollte schnell zum Ergebnis kommen (Beispiel war zur einfachen Illustration - geht um einen Vokabeltrainer).

    Gibt es z.B. eine MySQL Abfrage, welche die Ergebnisse liefert?

    Vielen Dank

  • #2
    Informiere dich mal über JOINs.

    Kommentar


    • #3
      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[COLOR="Red"] nicht[/COLOR] 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.
      Zuletzt geändert von AmicaNoctis; 26.05.2010, 02:05. Grund: Mehrfachposting

      Kommentar

      Lädt...
      X