![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 14.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam następujący problem. Mam bazę danych gdzie wprowadziłem informację o pracownikach. Jak napisać zapytanie SQL mając dwa rekordy data_zatrudnienia i data_zwolnienia: Wyświetl wszystkich z bazy którzy pracują np. 17lat.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 29.05.2006 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
-------------------- [gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 181 Pomógł: 0 Dołączył: 12.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
spróbuj do zapytania dodać where data_zwolnienia - data_zatrudnienia = 17 ale to najlepiej jeśli data_zwolnienia i data_zatrudnienia jest typu int bo nie sprawdzałem jak to będzie dla typu Date.
MatheW-> pisałem równocześnie z tobą. Ten post edytował maverickkk 31.05.2006, 19:58:50 -------------------- Robie to co lubie, lubie to co Robie
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 14.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czyli jak bym chciał osoby z pomiędzy jakiegoś przedziału wiekowego np. wszyscy od 16 do 19. To by było;
SELECT * FROM tabela WHERE data_zwolnienia-data_zatrudnienia between '17' and '19' ![]() ![]() ![]() ![]() Ten post edytował tiramizu 31.05.2006, 20:03:30 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 29.05.2006 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz najpierw sprawdzić, a potem zapytać? Powinno działać.
-------------------- [gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 14.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 14.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pytam dlatego bo nie działało. Wielkie dzieki wszystkim a w szczególności maverickkk zmiana typu na int pomogła. A jednak nie pomogła. Przy zmianie na int straciłem miesiąc i dzień. W bazie zapisuje się tylko rok. Do bazy wprowadzam dane za pomocą panelu napisanego w html, php, Java. Dokładnie w Javie mam napisany kalendaż który formatuje datę w taki sposób aby była zrozumiała dla bazy. Czyli klikam na kalendarzu a on mi wpisuje rok-miesiąc-dzień. Do niedawna myślałem że wszystko działa poprawnie dopóki nie wprowadziłem dla testów daty zatrudnienia 1945-05-27 i daty zwolnienia 2006-05-26. teraz dla statystyk chciałem wyciągnąć ile osób pracowało w firmie od 41 do 60 lat. Moje zapytanie SQL: $aSQL = "SELECT count(*) as a41d FROM `baza` WHERE dat_zat - dat_zwo between '41' and '60' "; Potem dla testów zadeklarowałem zmienną aby wyświetlić wynik samego odejmowania daty. Wynik: 61. Czemu nie wyświetla miesięcy ani dni ? . Dobra idąc dalej nie zmieniałem dat tylko zmieniłem zapytanie na : $aSQL = "SELECT count(*) as a61d FROM `baza` WHERE dat_zat - dat_zwo between '61' and '80' "; I tu też porażka, wynik 0. Dopiero po zmianie daty zatrudnienia na 1945-05-26 wynik był 1. Czyli okazuje się że jednak widzi miesiące i dni bo brakowało mu jednego dnia. Moje pytanie, jaki macie pomysł aby zadziałał pierwszy przykład ? Sorki jeśli nie jasno wytłumaczyłem mój problem, jeśli będzie nie jasny postaram się bardziej ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 20:35 |