BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- [SQL] JOIN zweiter Tabellen (http://www.black-board.net/thread.php?threadid=23581)


Geschrieben von inde am 20.12.2008 um 15:35:

  [SQL] JOIN zweiter Tabellen

Hi!

Ich hab grade ein Problem mit nem SQL Statment. Folgendes Szenario:

Tabelle ii_task:
code:
1:
2:
3:
4:
5:
6:
ID | NAME
-----------
1 | A
2 | B


Tabelle ii_service_person_task
code:
1:
2:
3:
4:
5:
SERVICE_ID | PERSON_ID |TASK_ID
1             | 1             |  1
1             | 2             |  1


Die Tabelle ii_service_person_task verknüpft Services mit Personen (Primärschlüssel aus diesen beiden Werten.) Der Relation wird ein Task zugeordnet.

Jede Person kann also immer nur einmal einem Service zugeordnet sein, es ist jedoch möglich dass es viele Relationen zwischen Service und Task gibt (da Personen gemeinsam einen Task bekommen).

Ich möchte nun herausfinden, welche Tasks einem Service X zugeordnet sind.

Mein aktueller Query:
code:
1:
2:
3:
4:
5:
6:
7:
SELECT ii_task.ID, ii_task.NAME
FROM `ii_task` 
LEFT JOIN ii_service_person_task 
ON (ii_task.ID=ii_service_person_task.TASK_ID) 
WHERE ii_service_person_task.SERVICE_ID=X


Gibt es n Relationen von Service auf Task erhalte ich damit aber auch n mal den Task im Result. Ich möchte ihn aber genau 1 mal erhalten, egal wie viele Relationen es zwischen Service und Task gibt.

Wie bekomm ich das hin? Mit meinem jetzigen Wissen bin ich gerade am Ende. Vielen vielen Dank für eure Hilfe!



Geschrieben von phlox81 am 20.12.2008 um 15:47:

 

DISTINCT oder auch GROUP BY kann hier abhilfe schaffen. Kommt auf den Anwendungsfall an.



Geschrieben von inde am 20.12.2008 um 15:52:

 

Danke für die Antwort. Werde mal einen Versuch starten.

EDIT: Vielen vielen Dank smile Mit GROUP BY funktionierts!!!


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH