Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobranie jednego rekordu danego id
Forum PHP.pl > Forum > Przedszkole
Marek607
Witam,
Mam takie zapytanie:

  1. $zapytanie ="select * from zdarzenia where typ_zdarzenia='zacielenie' and date(data_zdarzenia)<= DATE_SUB(CURDATE(), INTERVAL 20 DAY) and date(data_zdarzenia)>= DATE_SUB(CURDATE(), INTERVAL 22 DAY) or date(data_zdarzenia)<= DATE_SUB(CURDATE(), INTERVAL 41 DAY) and date(data_zdarzenia)>= DATE_SUB(CURDATE(), INTERVAL 43 DAY) or date(data_zdarzenia)<= DATE_SUB(CURDATE(), INTERVAL 62 DAY) and date(data_zdarzenia)>= DATE_SUB(CURDATE(), INTERVAL 64 DAY)";


W skrócie - pobiera rekordy o typie 'zacielenie' z okresu 20-22 41-43 i 62-64 dni od dnia dzisiejszego.

Mam jednak 2 pytania z tym związane:
1) Czy to zapytanie jest dobrze napisane czy można je napisać lepiej ( prościej,przejrzyściej)
2) W otrzymywanym wyniku bywa ze pobiera mi 2 zdarzenia dla tego samego bydlo_id (jest to jedno z pól w tabeli zdarzenia) - jedno ktore było 21 dni temu i drugie ktore było 42 dni temu - jak mogę zrobić że jeśli wystąpiło 21 dni temu to nie pobiera tego co było 42 dni temu?

Myslałem żeby najpierw wylistowac tabele bydlo z typem zenskim, nastepnie na podstawie wyniku dla kazdego id sprawdzic ostatnie zdarzenie o typie zacielenie - tyle ze wtedy raz ze robie dwa zapytania a dwa ze w przypadku sprawdzania kazdej sztuki bedzie to niezbyt optymalne.

Dzięki za pomoc.
Rysh
Cytat(Marek607 @ 19.11.2014, 21:28:22 ) *
2) W otrzymywanym wyniku bywa ze pobiera mi 2 zdarzenia dla tego samego bydlo_id (jest to jedno z pól w tabeli zdarzenia) - jedno ktore było 21 dni temu i drugie ktore było 42 dni temu - jak mogę zrobić że jeśli wystąpiło 21 dni temu to nie pobiera tego co było 42 dni temu?

http://dev.mysql.com/doc/refman/5.0/en/gro...-functions.html

Co do pierwszego, poczekaj na jakiegoś experta.
Marek607
group by bydlo_id które dodałem na koncu połowicznie zalatwiło sprawę - fakt że mam juz tylko jeden wynik o danym id ,ale pokazuje mi ten dalszy czyli np sprzed 42 dni zamiast tylko sprzed 21 - jakaś rada?
Rysh
Cytat(Marek607 @ 19.11.2014, 22:09:39 ) *
group by bydlo_id które dodałem na koncu połowicznie zalatwiło sprawę - fakt że mam juz tylko jeden wynik o danym id ,ale pokazuje mi ten dalszy czyli np sprzed 42 dni zamiast tylko sprzed 21 - jakaś rada?

Próbowałeś również dodać ORDER BY?
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.