Übersicht verloren in SQL String
localhorst
- php
Hallo Forum,
ich habe mich vertüddelt und gerade einen Brett vorm Kopf,
Ich habe folgende beide MySQL Tabellen
TABELLE:DIENSTPLAN
id
user_id user_id -> mitarbeiter.id
ab
bis
open
check_ab
check_bis
check_open
finish
TABELLE:MITARBEITER
id
vorname
nachname
passwort
email
aktiv
login_name
Und möchte nun alle Einträge die an einem bestimmten Tag liegen (eingegrenzt durch die ab,bis Bedingung) bekommen und zu den user_id einträgen aus der dienstplan Tabelle die entsprechenden Namen aus der mitarbeiter Tabelle.
Mein SQL String schaut bis jetzt so aus:
SELECT
dienstplan.id AS plan_id,
dienstplan.user_id,
dienstplan.ab,
dienstplan.bis,
dienstplan.open
,
mitarbeiter.vorname,
mitarbeiter.nachname,
mitarbeiter.id
FROM dienstplan, mitarbeiter
WHERE mitarbeiter.aktiv =1
AND dienstplan.ab >=1148248800
AND dienstplan.bis <=1148335199
AND mitarbeiter.id = dienstplan.user_id
Das liefert mir aber nur einen Treffer. Anstatt drei, wie es "meiner Logik" nach sein sollten.
Ich sitze glaube ich schon zu lange vorm Bildschirm, wäre sehr nett, wenn mir einer von euch konstruktiv auf die Sprünge hilft!
Gruß und schönes Wochenende
Localhorst
So,
kleines Päusken gemacht, neu aufgerollt und nu geht es...
select
mitarbeiter.vorname as vorname,
mitarbeiter.nachname as nachname,
mitarbeiter.id as mit_id,
dienstplan.id,
dienstplan.user_id,
dienstplan.ab,
dienstplan.bis,
dienstplan.open
from
dienstplan
left join mitarbeiter on (dienstplan.user_id=mitarbeiter.id)
WHERE (dienstplan.ab >=1148248800
AND dienstplan.bis <=1148335199)
Über einen join geht es dann.
Gruß
Localhorst
Hallo
Über einen join geht es dann.
Du hattest bereits vorher einen JOIN, und zwar einen impliziten INNER JOIN. Lesetipp zu JOINS:
Einführung Joins
Fortgeschrittene Join-Techniken.
Freundliche Grüße
Vinzenz