![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
mam dane w tabeli (id, data i pole liczbowe)
przykład danych z tabeli. 1 | 12-01-2010 | 456 2 | 10-02-2010 | 460 3 | 15-03-2010 | 489 ..... jak skontruować zapytanie, żebym otrzymał w wyniku taką tabelę jak poniżej z wynikami odejmowania kolejnych rekordów 12-01-2010 | 456 | 10-02-2010 | 460 | 4 wynik 4 ma byc rezultatem rekordów 1 i 2 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
To już sobie obrabiaj w php.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
A może jakaś podpowiedź.
Nie mam pojęcia jak się do tego zabrać, dlatego zadałem to pytanie. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Bazę byś zajechał
![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Nie mam pojęcia jak się do tego zabrać, dlatego zadałem to pytanie. Zadales pytanie jak to zrobic w mysql (jakie zapytanie). Wyjasnilem ci wiec, ze prosto zrobisz to w php - sądzilem ze php na poziomie dodaj/odejmij to znasz ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
To już sobie obrabiaj w php. Aj tam, aj tam. Lubię takie zagadki, więc podam gotowca. Rozwiązanie 1. Szybsze, ale numerowanie id musi iść po kolei. W przypadku luki zwróci niepoprawne wyniki:
Rozwiązanie 2. Wolniejsze, ale nie ma problemu z lukami w numeracji.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Zadales pytanie jak to zrobic w mysql (jakie zapytanie). Wyjasnilem ci wiec, ze prosto zrobisz to w php - sądzilem ze php na poziomie dodaj/odejmij to znasz ![]() Dodaj/ Odejmij itd. znam. Chciałem otrzymać informację może nie jak to zrobić ale jak się do tego zabrać. Od czego zacząć. Jedną opd. już otrzymałem, że zajechał bym baze danych - i to jest konkret bo wiem, że zapytania odpadają. Aj tam, aj tam. Lubię takie zagadki, więc podam gotowca. Rozwiązanie 1. Szybsze, ale numerowanie id musi iść po kolei. W przypadku luki zwróci niepoprawne wyniki:
Rozwiązanie 2. Wolniejsze, ale nie ma problemu z lukami w numeracji.
Dzięki, na szybkości mi nie zależy a wiadomo, że czasem jakieś id wyleci. Zobaczę co mi wyjdzie z tego 2 rozwiązania. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Stosując rozwiązanie nr 2 na pewno warto dodać indeks na pole z datą. Ja bym jednak sugerował zastanowienie się nad dodaniem dodatkowej kolumny określającej kolejny numer rekordu (i ją bierzesz pod uwagę w JOIN). Wówczas odpada problem z lukami w numeracji id, ale równocześnie jest konieczność aktualizacji pola numeru rekordu. Można jednak napisać trigger, który robiłby to automatycznie przy dodawaniu/edycji/usuwaniu rekordów z tabeli. Jeśli jednak nie masz w tabeli kosmicznie dużo danych i faktycznie nie zależy Ci na wydajności to na chwilę obecną pozostałbym na Twoim miejscu przy rozwiązaniu nr 2 z założonym indeksem na pole daty.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Rozwiązanie phpiona ma oczywiście sens w wypadku względnie normalnych i małych ilościach rekordów. Jeśli zaczniesz mieć jednak ogromne ich ilości to zawartość ujęta nawiasami w ON może być znacznie wolniejsza niż przepchnięcie tego na php. Wszystko zależy od ilości rekordów. Ogólnie wyglądałoby dla php coś w stylu:
gdzie **sql*_fetch_assoc to dowolna funkcja pobierająca dane rekordu z wyniku. Tak więc: pobieramy pierwszy rekord jako temp, potem w pętli pobieramy następny rekord i robimy odejmowanie między polami rekordu obecnego i tempa. Na koniec obecny staje się tempem dla kolejnego przejścia pętli. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Dzięki koledzy! Oba przykłady działają.
Rekordów nie mam i raczej nie będzie dużo. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 17:04 |