![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 10.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam takie zapytanie,
Jak do niego dorobić klauzule if/else. Jeśli istnieje jakiś taki rekord to zwraca count, a jesli nie to 0. Bo obecnie zapytanie liczy mi ilość dodanych rekordów do tabeli w przedziale co 15 min, ale jeśli w danym przedziale nie było dodanego zadnego rekordu go nie podaje. A chciałbym aby zwracało 0 (IMG:style_emoticons/default/wink.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam takie zapytanie,
Jak do niego dorobić klauzule if/else. Jeśli istnieje jakiś taki rekord to zwraca count, a jesli nie to 0. Bo obecnie zapytanie liczy mi ilość dodanych rekordów do tabeli w przedziale co 15 min, ale jeśli w danym przedziale nie było dodanego zadnego rekordu go nie podaje. A chciałbym aby zwracało 0 (IMG:style_emoticons/default/wink.gif)
Spróbuj tak. Edit: Tag mysql zepsuł (IMG:style_emoticons/default/tongue.gif) . Edit2: Poprawiłem zapytanie. Ten post edytował Ksar 26.05.2015, 23:21:41 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 10.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dalej jest niestety od 1
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
A jakim cudem COUNT może zwracać NULL lub wartość <0 (IMG:style_emoticons/default/questionmark.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 24 Dołączył: 12.05.2013 Skąd: Hamburg Ostrzeżenie: (0%) ![]() ![]() |
MySQL (a szczególnie GROUP BY) działa na danych, które SĄ w bazie. Jedyne, co możesz zrobić, to dodatkową tabelę, która będzie zawierała wszyskie możliwe wartości period_start i potem zrobić LEFT JOIN na niej.
Inaczej sobie tego nie wyobrażam. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 18 Dołączył: 7.10.2007 Skąd: Pruszków Ostrzeżenie: (0%) ![]() ![]() |
Jest też inny spartański pomysł bazujący na tym co napisał Xelah. Zamiast tworzyć dodatkową tabelę na stałę w bazie możesz sobie wygenerować w PHP fragment sqlki z unionami z przedziałem czasowym który Cię interesuje. Poniżej fragment prezentujący mój pomysł. Nie wiem na ile to będzie wydajne.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 10.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
To ja się w takim razie zastanawiam jak są tworzone wszystkie statystyki i wykresy dotyczace odwiedzic, dodanych nowych rekordów w ciągu ostatnich x dni, aby było to zrobione optymalnie.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 24 Dołączył: 12.05.2013 Skąd: Hamburg Ostrzeżenie: (0%) ![]() ![]() |
Na przykład poprzez post-processing po stronie aplikacji, która uzupełnia brakujące rekordy. Szybkie i skuteczne.
Pewnie są i inne metody, (jak procedury po stronie bazy) ale wszystko zależy od aplikacji. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Normalnie są robione statystyki. Albo z kostki OLAPowej, albo z BI, albo (co najbardziej prawdopodobne) z dodatkowej tabeli z periodami.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
To ja się w takim razie zastanawiam jak są tworzone wszystkie statystyki i wykresy dotyczace odwiedzic, dodanych nowych rekordów w ciągu ostatnich x dni, aby było to zrobione optymalnie. Na pewno nie w MySQL (IMG:style_emoticons/default/wink.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:24 |