Laden...

Datensätzte nur in einem Datums bereich anzeigen

Erstellt von Cokie vor 10 Jahren Letzter Beitrag vor 10 Jahren 746 Views
C
Cokie Themenstarter:in
33 Beiträge seit 2013
vor 10 Jahren
Datensätzte nur in einem Datums bereich anzeigen

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???

4.221 Beiträge seit 2005
vor 10 Jahren

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

L
416 Beiträge seit 2008
vor 10 Jahren

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()

?

C
Cokie Themenstarter:in
33 Beiträge seit 2013
vor 10 Jahren

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.

T
708 Beiträge seit 2008
vor 10 Jahren

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