Datensätze aus zwei Tabellen filtern

Datensätze aus zwei Tabellen filtern

am 05.03.2007 17:46:36 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 05.03.2007 18:33:15 von Johannes Vogel

Hi Christian

Christian wrote:
> 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
> 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!

Du kannst via array_diff() die fraglichen Aufgaben rausfiltern.

Das willst du aber wohl eher nicht und stattdessen das Problem in der DB
selbst lösen. Dann frag auch in der entsprechenden Gruppe. Mit PHP hat
das ansonsten nichts zu tun. d.c.d.mysql oder d.c.d.misc existieren.

HTH, Johannes