verwendetes Datenbanksystem: <MSSQL>
Hallo,
ich hab ein kleines Problem wo ich schon seit einer ganzen Zeit drüber grübel.
Ich habe 3 Tabellen
Einmal Leihgerät. Einmal Leihrelation und einmal Leihauftrag.
Über die Leihrelation wird der Leihauftrag mit dem Leihgerät verknüpft.
In der Leihauftrag Tabelle gibt es u.a. die Spalten Verliehenam und zurückam.
Jetzt möchte ich das Alle Geräte angzeigt werden die verfügbar sind.
Allerdings bekomm ich das nicht hin. Hab ihr eine Idee???
Du kannst ja leicht ermitteln welche Geräte im Moment verliehen sind.
Mach doch einen NOT IN Select auf die verliehenen Geräte.
PS: Habe schon seit Jahren kein SQL mehr gebraucht... deshalb mache ich auch keinen Vorschlag wie das in SQL genau aussehen müsste.
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Hallo Cokie,
meinst du
SELECT lg.* FROM Leihgerät lg LEFT JOIN Leihrelation lr ON la.id = lr.fk LEFT JOIN Leihauftrag la ON la.id = lr.fk WHERE la.zurückam < GETDATE()
?
Hallo Cokie,
meinst du
SELECT lg.* FROM Leihgerät lg LEFT JOIN Leihrelation lr ON la.id = lr.fk LEFT JOIN Leihauftrag la ON la.id = lr.fk WHERE la.zurückam < GETDATE()
?
Soweit klappt das auch.
Das problem ist ja, das ich auch ein Art "vorerfassung" brauch. Bsp.
Leihgerät:
Nokia Telefon
So Kunde A möchte gerne am 2.6.2013 das Nokia leihen. Heist ich schreib in denn leihauftrag in Spalte "Verliehenam" 2.6.2013 und die Spalte "zurückam" bleibt Null.
Jetzt möchte Kunde B das Nokia am 23.5.2013 Leihen. Das ist möglich weil das Nokia erst am 2.6 an Kunden A Verliehen wird. Das heist das Nokia muss bis zum 2.6 Sichtbar sein. Damit ich Kunden B das Nokia auch verleihen kann (Vorrausetztung ist natrülich das Kunde B am 1.6. das Nokia wieder zurückbringt).
Und da hab ich das Problem ich bekomm das nicht hin das wenn der Auftrag drin steht das Gerät in dem Zeitraum sichtbar bleibt bis das Gerät tatsächlich Verliehen ist.
So Kunde A möchte gerne am 2.6.2013 das Nokia leihen. Heist ich schreib in denn leihauftrag in Spalte "Verliehenam" 2.6.2013 und die Spalte "zurückam" bleibt Null.
Jetzt möchte Kunde B das Nokia am 23.5.2013 Leihen. Das ist möglich weil das Nokia erst am 2.6 an Kunden A Verliehen wird. Das heist das Nokia muss bis zum 2.6 Sichtbar sein. Damit ich Kunden B das Nokia auch verleihen kann (Vorrausetztung ist natrülich das Kunde B am 1.6. das Nokia wieder zurückbringt).Und da hab ich das Problem ich bekomm das nicht hin das wenn der Auftrag drin steht das Gerät in dem Zeitraum sichtbar bleibt bis das Gerät tatsächlich Verliehen ist.
Hi Cokie,
das löse ich eigentlich immer dadurch, dass ich das Feld mit dem Enddatum durch das Tagesdatum fülle, sofern dies leer ist.
Also:
WHERE ISNULL(la.zurückam,GETDATE()) < GETDATE()
Egal an welchem Tag das Statement ausgeführt wird, das fehlende Enddatum ist nie < Getdate 😃
Schönen Feiertag,
trib