localhorst: Übersicht verloren in SQL String

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

  1. 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

    1. 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