1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
232
232
EMPFEHLEN
-
18.09.11 14:22 #1
- Registriert seit
- Apr 2011
- Beiträge
- 21
Hallo,
hier mal mein Problem....
Tabelle Mitglieder (fw_mem_daten) (pid => PRIMARY, AUTO_INCREMENT)
Code :1 2 3 4
pid | vorname | nachname | abteilung 1 | th.... | fir..... | 1 2 | al.... | sch..... | 2 3 | pf.... | do...... | 1
Tabelle Dienstplan (fw_dienst_plan) (id => PRIMARY, AUTO_INCREMENT)
Code :1 2 3
id | abteilung | beginndatum | enddatum 1 | 1 | 2011-01-01 08:00:00 | 2011-01-01 16:00:00 2 | 1 | 2011-01-02 08:00:00 | 2011-01-02 16:00:00
Tabelle Dienstteilnahme (fw_dienst_teilnahme) (id = id von fw_dienst_plan, pid = pid von fw_mem_daten)
Code :1 2 3 4 5 6
id | pid | teilnahme 1 | 1 | anwesend 1 | 2 | anwesend 1 | 3 | entschuldigt 2 | 1 | anwesend 2 | 3 | anwesend
Wie man hierraus hoffentlich ersehen kann, war die PID 2 zum Zeitpunk des Dienstes von ID 1 noch in der ABTEILUNG 1. Irgendwann danach muss dieser dann die Abteilung gewechselt haben.
Was möchte ich jetzt eigentlich haben?
Es sollen erstmal alle PIDs angezeigt werden die (noch) in ABTEILUNG 1 sind. Desweiteren sollen auch die PIDs angezeigt werden, die in der Dienstteilnahme drinstehen, egal in welcher Abteilung sie sich jetzt befinden.
Es sollen auch nicht alle Dienstteilnahmen ausgegeben werden sondern nur die übermittelt werden. Zum Bsp. wären das jetzt nur die ID 1 und 2
Gibt mir alle Mitglieder aus. bei der ID wird mit NULL aufgefüllt, wenn kein Eintrag gefunden wurde. Also erstmal alles richtig.PHP-Code:SELECT md.pid, CONCAT( md.nachname, ', ', md.vorname ) AS mitglied, dt.id
FROM fw_mem_daten AS md
LEFT JOIN fw_dienst_teilnahme AS dt ON md.pid = dt.pid
AND (
dt.id
IN ( 1, 2 )
)
ORDER BY mitglied
Wie bekomme ich jetzt noch die Einschränkung hin, dass er mir wo die ID NULL ist, nur Mitglieder der Abteilung 1 ausgegeben werden?
geht das überhaubt mit joins?--------------------------------
Have Phune Kenguruh2002
-
item: dt.id IN ( 1, 2 ) gehört in ein WHERE-Teil und nicht in den JOIN-Teil
item: die Einschränkung der dt.id würde ich in ein Subquery schreiben. Es erleichtert nachher die verschiedenen Bedinungen auszubändeln
item: Der WHERE-Teil muss nun berücksichtigen: Alle mit id NULL und Abteilung 1, sowie alle die eine ID haben. Das gibt eine AND-Verknüpfung für den ersten Teil und dann noch beide Teile mit einem OR zusammenhängen
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
SELECT md.pid, CONCAT( md.nachname, ', ', md.vorname ) AS mitglied, dt.id FROM fw_mem_daten AS md LEFT JOIN ( SELECT id FROM fw_dienst_teilnahme WHERE id IN (1,2) ) AS dt ON md.pid = dt.pid WHERE ( dt.id IS NULL AND md.abteilung = 1 ) OR ( NOT dt.IS IS NULL ) ORDER BY mitglied
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
19.09.11 14:29 #3
- Registriert seit
- Apr 2011
- Beiträge
- 21
Besten Dank
--------------------------------
Have Phune Kenguruh2002
Ähnliche Themen
-
MYSQL - Sortieren mit Joins
Von switchkill im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 14.03.09, 15:36 -
mySQL und Joins
Von notebook20000 im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 13.07.07, 10:39 -
MySQL: Wie funktionieren JOINs?
Von Karbrüggen im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 16.03.07, 19:00 -
MySQL und Joins
Von mathiu im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 13.10.04, 08:35 -
Problem mit JOINs (mySQL)
Von laZee im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 10.06.04, 15:57





Zitieren

Login





