Datensätze aus zwei Tabellen filtern

Datensätze aus zwei Tabellen filtern

am 05.03.2007 19:22:17 von Christian

Hallo,

ich habe da ein kniffliges Problem, das ich einfach nicht gelöst
bekomme. Sicherlich sind hier ja so pfiffige Köpfe, für die das alles
kein Problem darstellt, aber es will mir einfach nicht gelingen.

Zur Problemstellung: ich habe zwei Tabellen, die eine (tasks) enthält
nur Aufgaben:

ZÄHLER task_ID task_title task_description


Die andere (users_to_tasks) enthält die Zuordnung von usern zu diesen
Aufgaben

ZÄHLER utt_task_ID utt_user_id


Ich möchte nun zwei Dinge erreichen. Einmal alle Aufgaben ausgeben, die
für einen bestimmten User zugeordnet sind. Das klappt soweit ganz gut:


SELECT * FROM tasks LEFT JOIN users_to_tasks ON task_ID = utt_task_ID
WHERE '$gewuenschterUser' = utt_user_id


Mein Problem: ich möchte nun in einem zweiten Schritt alle Aufgaben
ausgeben, an denen '$gewuenschterUser' NICHT beteiligt ist. Das Problem
ist nämlich, dass mehrere Leute an einer Aufgabe arbeiten können und
entsprechend öfter in der users_to_tasks Tabelle vorkommen können.

Hat da irgendjemand eine Idee, wie das zu machen wäre?

Schonmal ganz vielen, herzlichen Dank an alle, die das lesen und noch
viel mehr an die, die sogar antworten. Ihr würdet mir wirklich sehr helfen!

Christian

Re: Datensätze aus zwei Tabellen filtern

am 06.03.2007 09:05:45 von Kai Ruhnau

Christian wrote:
^^^^^^^^^
Trage hier bitte deinen vollständigen Namen ein. Das erhöht die
Wahrscheinlichkeit, dass man dir antwortet.

> ich habe da ein kniffliges Problem, das ich einfach nicht gelöst
> bekomme. Sicherlich sind hier ja so pfiffige Köpfe, für die das alles
> kein Problem darstellt, aber es will mir einfach nicht gelingen.

Nein, das ist ein Standardproblem und wird in jeder Einführung zu
relationalen Datenbanken behandelt.

> Zur Problemstellung: ich habe zwei Tabellen, die eine (tasks) enthält
> nur Aufgaben:
>
> ZÄHLER task_ID task_title task_description
>
>
> Die andere (users_to_tasks) enthält die Zuordnung von usern zu diesen
> Aufgaben
>
> ZÄHLER utt_task_ID utt_user_id
[snip]
> Mein Problem: ich möchte nun in einem zweiten Schritt alle Aufgaben
> ausgeben, an denen '$gewuenschterUser' NICHT beteiligt ist.

Du suchst LEFT JOIN mit IS NULL.

> Das Problem
> ist nämlich, dass mehrere Leute an einer Aufgabe arbeiten können und
> entsprechend öfter in der users_to_tasks Tabelle vorkommen können.

Warum ist das ein Problem. Genau dafür hast du doch die n:m-Beziehung
erstellt, oder nicht?

Grüße
Kai