Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> nietypowe zapytanie
batman
post 7.11.2005, 15:06:05
Post #1





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Witam.
Mam problem z zapytaniem sql. A dokładniej rzecz biorąc z brakiem tego zapytania. Mam tabelę, w której przechowywane są kursy walut. Każdy kurs ma przypisaną datę. Są dni, w których nie wprowadza się kursów do bazy. Np.
2004-01-05 | 3.5, 2004-01-06 | 3.45, 2004-01-08 3.44, itd.

W jaki sposób zbudować zapytanie, by wyświetliło mi wszystkie dni (również tych, których nie ma). W miejsce kursu nieistniejącego dnia należy wstawić ostatni kurs, jaki był przed brakującym dniem. Baza - mysql 3.23

Mam nadzieję, że jasno przedstawiłem sprawę winksmiley.jpg


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
ActivePlayer
post 7.11.2005, 15:54:28
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


Cytat
W jaki sposób zbudować zapytanie, by wyświetliło mi wszystkie dni (również tych, których nie ma)


Wszystkich dni jest nieskonczenie wiele... chodiz o dni od 1 wpisu do bazy do now(); ?
Go to the top of the page
+Quote Post
batman
post 7.11.2005, 16:00:07
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Racja. Nie napisałem dokładnie. Chodzi oczywiście od jakiejś daty do dnia dzisiejszego, ewentualnie innej daty.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
orson
post 7.11.2005, 21:32:18
Post #4





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam ...

selectuj wszystko przy wyświetlaniu sprawdzaj w php czy poprzednia data to jest obecna - 1 ... samym sql może być trudno (chyba nawet się nie da) to zrobić ...

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
batman
post 7.11.2005, 22:06:51
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Nie da rady sprawdzać w php data-1, ponieważ w bazie jest kilka tysięcy wierszy i z każdym dniem przybywa. Każde spawdzenie spowoduje spowolnienie działanie aplikacji. Najlepszym rozwiązaniem byłoby jedno zapytanie sql.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
orson
post 8.11.2005, 09:45:32
Post #6





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam ...

to ty chcesz wyświetlać kilkatysięcy wierszy na ekranie na raz questionmark.gifquestionmark.gif powinieneś dzielić to na kawałki i wyświetlać w tygodniach lub miesiącach ... wtedy masz dużo mniej na raz i możesz sprawdzać ...

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
batman
post 8.11.2005, 10:10:37
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Chcę te kilka tysięcy wierszy zapisać do pliku xml. Metoda ta działa bardzo ładnie, z jedną wadę - nie wyświetla dni, których nie ma w tabeli. W te dni obowiązuje kurs z dnia poprzedniego i to muszę uzyskać.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
orson
post 8.11.2005, 10:52:55
Post #8





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam ...

w sql nie da się tego uzyskać ... chyba że zrobisz sobie tabelkę z jedną kolumną date i tam po kolei daty wszystkie ... potem joinując można uzyskać wszystkie daty i nulle w pustych miejscach ... ale nadal nie wiem czy da się rozwiązać pobranie wartości z poprezedniego dnia ... w php to nie będzie bardzo powolne ... możesz pobierać z bazy datę w formacie YYYYMMDD (czyli <kolumna_Date>+0) i porównywać na zasadzie liczb (tylko jak jest dzień 01 inaczej)

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
batman
post 8.11.2005, 10:57:52
Post #9





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Nie chodzi mi o php. W php rozwiązanie już dawno znalazłem. Chodz mi o rowiązanie tego problemu w sql lub informację, że się nie da tego zrobić w sql. Z góry dziękuje za pomoc.

Cytat
w php to nie będzie bardzo powolne


Będzie powolne uwierz mi na słowo winksmiley.jpg


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Synaps
post 8.11.2005, 13:11:46
Post #10





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 1.12.2003
Skąd: Gdynia

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


Żeby wyświetlić też dane dla dni których nie ma w tabeli z kurasmi, musisz zrobić złączenie left lub right z tabelą która posiada pełen kalendarz. Najłatwiej to zrobić generując sobie właśnie tabele z kalendarzem, dni po koleji w jakiś tam oknie czasu. Nastepnie robisz złączenie z tą tabela i masz gotowy wynik. Co do wpisów brakujących to przy przetwarzaniu wyniku prosty if i po sprawie.

-----edit
nie widzialem ostatniego wpisu orsona cool.gif

----edit 2
Cytat
Będzie powolne uwierz mi na słowo


A ja się założe, że spadek wydajności przy zaproponowanym przez orsona sposobie będzie akceptowalny, czyli bardzo mało. Jeden if przy tworzeniu XML'a będzie nie zauważaly. Chyba że chcesz zrezygnować z php'a do exportu i korzystasz z jakiegos innego narzedzie, wtedy ten spor nie ma sensu btw: z mysql'a 3.23 nic więcej nie uzyskasz

Ten post edytował Synaps 8.11.2005, 13:58:35


--------------------
MySQL said:

You have an error in your SQL syntax near ' `sygnatura` VARCHAR, NOT NULL
Go to the top of the page
+Quote Post
batman
post 8.11.2005, 14:12:03
Post #11





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Niestety musi być mysql 3.23. Dzięki za radę pokombinuję z joinem. Rola php kończy się na generowaniu xml'a. Resztę zabawy pozostawim aplikacji napisanej we flashu, która ma te kursy wyświetlić. A co do wydajności, to spadek jest ogromny, ponieważ należy wykonać cztery takie zapytania. Każde z zapytań wyciąga dane z innej tabeli. Dodatkowe if'y czy sql spowolni ten skrypt, a co za tym idzie rysowanie wykresu.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 30.06.2025 - 10:59