Guten Tag!
Ich versuche seit geraumer Zeit eine MySQL-Abfrage über mehrere Tabellen zu erstellen, scheitere aber an den Joins. Ich habe mir heute mehrfach einige Referenzen dazu durchgelesen, brauche aber anscheinend Hilfe, um das auf meinen Fall anwenden zu können.
Ich habe drei Tabellen (jobs, workers, workers_jobs), die wie folgt aufgebaut sind.
jobs:
job_ID | job_name | startdate | enddate | calculated_time | active
(Zuerst benötige ich nur job_ID und job_name)
workers:
worker_ID | worker_name | weekdays | dayhours
workers_jobs:
const_ID | worker_ID | job_ID
Die Tabellen sind wie folgt gefüllt:
jobs beinhaltet einen Auftrag genau einmal, job_ID ist unique und auto_increment.
workers beinhaltet jeden Arbeiter genau einmal, worker_ID ist unique und auto_increment.
workers_jobs führt beide zusammen. const_ID ist hier unique und auto_increment, worker_ID kann eine ID aus workers beinhalten, job_ID eine aus jobs. Es können mehrere worker_ID zu einer job_ID bestehen, aber auch umgekehrt mehrere job_ID zu einer worker_ID. Sprich: mehrere Arbeiter können an einem Auftrag arbeiten, aber ein Arbeiter kann auch an mehreren Aufträgen arbeiten.
Mein SELECT sieht bisher so aus:
Ich bekomme als result allerdings nur:
Ich hätte aber gerne:
Wie kann ich das lösen?
Vielen Dank im voraus!
Edit: Ich sehe gerade, dass die Darstellung etwas ungünstig ist. Wenn man die "Tabellen" hier raus kopiert und in ein Textdokument, steht alles schön getabbt untereinander.
Ich versuche seit geraumer Zeit eine MySQL-Abfrage über mehrere Tabellen zu erstellen, scheitere aber an den Joins. Ich habe mir heute mehrfach einige Referenzen dazu durchgelesen, brauche aber anscheinend Hilfe, um das auf meinen Fall anwenden zu können.
Ich habe drei Tabellen (jobs, workers, workers_jobs), die wie folgt aufgebaut sind.
jobs:
job_ID | job_name | startdate | enddate | calculated_time | active
(Zuerst benötige ich nur job_ID und job_name)
workers:
worker_ID | worker_name | weekdays | dayhours
workers_jobs:
const_ID | worker_ID | job_ID
Die Tabellen sind wie folgt gefüllt:
jobs beinhaltet einen Auftrag genau einmal, job_ID ist unique und auto_increment.
workers beinhaltet jeden Arbeiter genau einmal, worker_ID ist unique und auto_increment.
workers_jobs führt beide zusammen. const_ID ist hier unique und auto_increment, worker_ID kann eine ID aus workers beinhalten, job_ID eine aus jobs. Es können mehrere worker_ID zu einer job_ID bestehen, aber auch umgekehrt mehrere job_ID zu einer worker_ID. Sprich: mehrere Arbeiter können an einem Auftrag arbeiten, aber ein Arbeiter kann auch an mehreren Aufträgen arbeiten.
Mein SELECT sieht bisher so aus:
Code:
SELECT `workers_jobs`.`job_ID`, `workers_jobs`.`worker_ID`, `jobs`.`job_ID`, `jobs`.`job_name`, `workers`.`worker_ID`, `workers`.`worker_name` FROM `workers_jobs` LEFT JOIN `jobs` ON `jobs`.`job_ID` = `workers_jobs`.`job_ID` LEFT JOIN `workers` ON `workers`.`worker_ID` = `workers_jobs`.`worker_ID`
Code:
workers_jobs.job_ID | workers_jobs.worker_ID | jobs.job_ID | jobs.job_name | workers.worker_ID | workers.worker_name 1 | 1 | NULL | NULL | 1 | name1 2 | 1 | NULL | NULL | 1 | name1 2 | 2 | NULL | NULL | 2 | name2
Code:
workers_jobs.job_ID | workers_jobs.worker_ID | jobs.job_ID | jobs.job_name | workers.worker_ID | workers.worker_name 1 | 1 | 1 | job1 | 1 | name1 2 | 1 | 2 | job2 | 1 | name1 2 | 2 | 2 | job2 | 2 | name2
Wie kann ich das lösen?
Vielen Dank im voraus!
Edit: Ich sehe gerade, dass die Darstellung etwas ungünstig ist. Wenn man die "Tabellen" hier raus kopiert und in ein Textdokument, steht alles schön getabbt untereinander.
Kommentar