Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie SQL, LIczenia lat.
tiramizu
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
MatheW
post
Post #2





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 29.05.2006
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  1. SELECT * FROM tabela WHERE data_zwolnienia-data_zatrudnienia>'17'


--------------------
[gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
Go to the top of the page
+Quote Post
maverickkk
post
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
Go to the top of the page
+Quote Post
tiramizu
post
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'

questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?

Ten post edytował tiramizu 31.05.2006, 20:03:30
Go to the top of the page
+Quote Post
MatheW
post
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]
Go to the top of the page
+Quote Post
tiramizu
post
Post #6





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 14.07.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
tiramizu
post
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 14.07.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:35