Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Pobranie jednego rekordu danego id
Marek607
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 4.03.2010

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


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





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


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





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 4.03.2010

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


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?
Go to the top of the page
+Quote Post
Rysh
post
Post #4





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


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

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

 



RSS Aktualny czas: 23.08.2025 - 02:07