ZapytanieSQL- data





viplook - 05 Kwi 2006 14:11
proszę o pomoc.
jak sformułować zapytanie SQL jesli chce aby z bazy danych wyszukać NAZWISKA KLIENTÓW którzy zalegają ze zwrotem kasety dłuzej niż 5 dni w odniesieniu do daty w której te pytanie jest stosowane.





matrix1000 - 05 Kwi 2006 15:21
napisz najpierw tutaj jakie są nazwy tabel i kolumn w bazie danych, to coś wymyślimy



viplook - 05 Kwi 2006 15:37
tabela Modele(kod_modelu,nazwa,producent,wartosc,rozmiar,cena_wyozczenia)
tabela Egzemplarz
(kodModelu,nr_egzemplarz)
tabela Wypozyczenia
(kod_modelu,nr_egzemplarza,kod_klienta,data_wypozyczenia,data_zwrotu)
tabela Klienci
(Kod_klienta,nazwisko,adres)
pdkreślene atrybuty to klucze główne.



matrix1000 - 05 Kwi 2006 15:56
przykładowo:

SELECT Nazwisko, Zwrot_kasety,
FROM Klienci
WHERE Zwrot_kasety <= '2006-04-30'
ORDER BY Nazwisko;

opis powyższego zapytania:
1). Wyświetl kolumnę 'Nazwisko' i kolumne 'Zwrot_kasety'
2). z tabeli 'Klienci'
3). gdzie wartość pola w kolumnie 'Zwrot_kasety' jest mniejsza bądź rowna dacie '2006-04-30' (tutaj wpisujesz date pięć dni wstecz od aktualnej).
4). Sortuj/Uporządkuj dane według kolumny 'Nazwiska'

Dodano po 11 [minuty]:

czyli będzie tak:

SELECT Klienci.Nazwisko, Wypozyczenia.data_zwrotu,
FROM Klienci, Wypozyczenia,
WHERE Wypozyczenia.data_zwrotu <= '2006-04-30'
ORDER BY Klienci.Nazwisko;






MiL999 - 06 Kwi 2006 08:51
Tu chodziło o zaleganie dłużej niż 5 dni czyli:

SELECT k.Nazwisko, w.data_zwrotu
FROM
klienci k JOIN wypozyczenia w ON k.kod_klienta = w.kod_klienta
WHERE
DATEDIFF(day, w.data_zwrotu, GetDate()) > 5
ORDER BY k.Nazwisko;

Datediff to różnica dat. Na pewno jest w SQLServerze. Jezeli piszesz to na innej bazie to poszukaj odpowiedniej funkcji.



viplook - 09 Sie 2006 14:34
dzięki naprowadziliście mnie na rozwiązanie tego problemu