Announcement

Collapse
No announcement yet.

Verständnisfrage für Left join

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Verständnisfrage für Left join

    Hallo zusammen,

    ich hoffe hier auch als Anfänger Hilfe zu bekommen. Ich habe 3 Tabllen, die folgendermassen aufgebaut sind:

    Code:
    schichtdatum
    Feld 	Typ 	Null 	
    ID 	int(11) 	Nein 			
    datum 	date 	Nein 			
    uhrzeit-ID 	int(11) 	Nein 			
    bemerkung 	varchar(255) 	Nein
    Code:
    schichten
    Feld 	Typ 	
    ID 	int(11) 	Nein 			
    schichtart 	varchar(120) 	Nein
    Code:
    schichtuhrzeit
    Feld 	Typ 	Null 	
    ID 	int(11) 	Nein 			
    uhrzeit 	varchar(40) 	Nein 			
    schicht-id 	int(11) 	Nein 			
    moeglich 	varchar(2) 	Nein
    Im ersten Step möchte ich jetzt ne SQL abfrage starten, bei der zum entsprechenden Datum die eingetragene Uhrzeit abgefragt wird. Die dazugehörige Schicht soll im zweiten Step abgefragt werden. Ich bleib aber schon beim ersten SQL Statement hängen:

    Code:
    SELECT * FROM schichtdatum LEFT JOIN schichtuhrzeit ON schichtuhrzeit.ID = schichtdatum.ID WHERE schichtdatum.datum = 20100226;
    Es klappt bei jedem Datum ausser dem 19., Ausgabe sieht dann so aus:

    Code:
    ID 	datum 	uhrzeit-ID 	bemerkung 	ID 	uhrzeit 	schicht-id 	moeglich
    5 	2010-02-26 	4 	  	5 	15.00-0.26 Uhr 	7 	Sa
    beim 19. sieht es dann so aus:

    Code:
    ID 	datum 	uhrzeit-ID 	bemerkung 	ID 	uhrzeit 	schicht-id 	moeglich
    9 	2010-02-19 	6 	  	NULL 	NULL 	NULL 	NULL
    Ist mein Tabellenaufbau total vermurkst, wie gesagt bin Anfänger ? Nach meinem Wissenstand sollten die Beziehungen so korrekt aufgebaut sein:

    1 Schichtuhrzeit - n Schichtdatum
    1 Schichtart - n Schichtuhrzeiten

    oder liegt es an meinem SQL Statement ?

    Mir raucht ziemlich der Schädel und ich wäre froh Hilfe zu bekommen.

    Danke und Gruss Jürgen

  • #2
    Dein ON ist falsch
    Code:
    ON schichtuhrzeit.ID = schichtdatum.ID
    hier vergleichst du die ID von schichtuhrzeit mit der ID von schichtdatum.

    Du möchtest aber die ID von schichtuhrzeit mit der uhrzeit-ID von schichtdatum vergleichen.

    Edit: ich würde in deinen Feldbezeichner das Minus durch ein Unterstrich ersetzen und den Feldtype bei uhrzeit von varchar auf time ändern.
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      @Dibo 33

      danke für deine schnelle Hilfe, manchmal sieht man echt den Wald vor lauten Bäumen nicht

      Mit den Unterstrichen ist ein guter Tipp, hab ich direkt umgesetzt, das mit dem Datentyp und der dadurch entstehenden weiteren Tabellenspalte muss ich mal schauen, ob das notwendig ist, formal hast du sicherlich recht.

      Schönen Abend noch.

      Comment


      • #4
        das mit dem Datentyp und der dadurch entstehenden weiteren Tabellenspalte muss ich mal schauen, ob das notwendig ist
        Glaube mir, das ist notwendig.

        Wenn ich jedesmal für die Aussagen "mit den Daten werden keine Berechnungen angestellt" und spätestens nach 3 Monate "Wir benötigen noch die Berechnung der Daten, geht doch leicht, schliesslich haben wir diese gespeichert" auch nur 1 DM/EUR bekommen hätte, wäre ich jetzt reicher als BG.
        Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

        Comment

        Working...
        X