Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie SQL
Forum PHP.pl > Forum > Bazy danych > MySQL
tiramizu
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.
MatheW
  1. SELECT * FROM tabela WHERE data_zwolnienia-data_zatrudnienia>'17'
maverickkk
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ą.
tiramizu
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'

questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?
MatheW
A nie możesz najpierw sprawdzić, a potem zapytać? Powinno działać.
tiramizu
Cytat(MatheW @ 31.05.2006, 19:08 ) *
A nie możesz najpierw sprawdzić, a potem zapytać? Powinno działać.



Pytam dlatego bo nie działało. Wielkie dzieki wszystkim a w szczególności maverickkk zmiana typu na int pomogła.
tiramizu
Cytat(tiramizu @ 31.05.2006, 19:45 ) *
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 snitch.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.