![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
proszę o pomoc w skonstruowaniu poprawnego zapytania podającego najbliższą datę (przyszłą) zdarzenia, które wydarzy się najszybciej z wszystkich wpisanych zdarzen np jedno za 3 lata drugie za 5 miesięcy lub inne za 450 dni itd, zależnie od tego jak uzytkownicy wpisali, a maja do dyspozycji 3 rozne interwaly: Y, M, D Tabela 'zdarzenia' wyglada mniej wiecej tak: id, data_wpisu, wykonac_za, interwal 1, 2010-12-09, 3, Y 2, 2010-12-09, 5, M 3, 2010-12-09, 450, D próbowałem m.in. tak: SELECT MIN(t1.ADDDATE(data_wpisu, INTERVAL, wykonac_za,Y) as data_plan, t2.ADDDATE(data_wpisu, INTERVAL, wykonac_za,M) as data_plan, t3.ADDDATE(data_wpisu, INTERVAL, wykonac_za,D) as data_plan) FROM zdarzenia as t1, zdarzenia as t2, zdarzenia as t3 WHERE t1.interwal="Y" and t2.interwal="M" and t3.interwal="D" oczywiście, powyższe nie działa. Wdzięczny będę za wszelkie sugestie. pozdrawiam Arek |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
zmienilem tylko interval na inter |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki za p-odpowiedz. Jednak podrąże jeszcze temat. W rozwiazaniu jakie podal maly_swd zapytanie zwroci duzo rekordow, z ktorych oczywiscie po odpowiednim posortowaniu interesujacy mnie rekord bedzie pierwszy albo ostatni. Co zrobic zeby dostac w odpowiedzi tylko jeden rekord (walka o wydajność / czas działania). Czy funkcja MINimum moze byc zagnieżdżona w drugiej funkcji MIN?
Czy ktokolwiek widzi tu możliwość użycia funkcji MIN? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
SELECT min(kiedy) a, max(kiedy) b from (
SELECT CASE WHEN inter='D' THEN DATE_ADD(data_wpisu, INTERVAL wykonac_za DAY) WHEN inter='M' THEN DATE_ADD(data_wpisu, INTERVAL wykonac_za MONTH) WHEN inter='Y' THEN DATE_ADD(data_wpisu, INTERVAL wykonac_za YEAR) END AS kiedy FROM test ORDER BY kiedy) as cos[sql][/sql] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 16:34 |