![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 28.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam taką baze danych:
_wartosc____data_____czas_____dzien ____1____2005-01-02__2:00__poniedziałek ____5____2005-01-02__3:00__poniedziałek ____4____2005-01-02__4:00__poniedziałek ____1____2005-01-03__2:00__wtorek ____3____2005-01-03__3:00__wtorek czy jest możliwość zastosować tylko SELECT oczywiście z FORM WHERE itp. żeby mi znalazło w wszystkie poniedziałki czy wartość o godzinie przykładowo 2:00 była wieksza od wartości tego dnia o godzinie 3:00 i tak żeby sprawdziło każdy poniedziałek w bazie i zapisało wynik do zmiennej $wynik, na przykład było 45 poniedziałków w których wartość o 2:00 była wieksza od wartosci o 3:00? I jescze jedna prośba jeżeli ktoś ma strone gdzie są wytłumaczone wszystkie możliwości SELECT chodzi mi o MAX MIN COUNT itp. to podajcie. Dzięki Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 3 Dołączył: 22.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Primo: pisz całymi zdaniami bo tego się czytać nie da, pisz dokładniej!
Secundo: to wszystko jest wytłumaczone w MANUALU! Tertio: zrobiłeś coś, napisałeś coś, czy czekasz aż ci podają na tacy? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 28.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Aztech @ 2005-11-21 19:15:19) Tertio: zrobiłeś coś, napisałeś coś, czy czekasz aż ci podają na tacy? A dlaczego by nie!!!!! Przecież po to są fora dyskusyjne żeby naprowadzić lub podać rozwiązanie, przecież logiczne jest że jak bym znał rozwiązania to bym nie pisał ten post. Jest baza są kolumny wartosc, data, czas, dzien i chcę wyszukać ile było poniedzialków w których wynik w kolumny wartosc o 2:00 był wiekszy niż o 3:00 Nie wiem jeszcze w jaki sposób można to wytłumaczyć, myślę że nawet pierwsze tłumaczenie było czytelne. Podam na dokładnym przykładzie, jeżeli cała baza wygląda tak: _wartosc____data_____czas_____dzien ____9____2005-01-02__2:00__poniedziałek ____5____2005-01-02__3:00__poniedziałek ____4____2005-01-02__4:00__poniedziałek ____1____2005-01-03__2:00__wtorek ____3____2005-01-03__3:00__wtorek ____9____2005-01-06__2:00__poniedziałek ____1____2005-01-06__3:00__poniedziałek ____4____2005-01-06__4:00__poniedziałek ____1____2005-01-08__2:00__środa ____5____2005-01-08__3:00__środa ____4____2005-01-08__4:00__środa ____1____2005-01-11__2:00__poniedziałek ____6____2005-01-11__3:00__poniedziałek ____4____2005-01-11__4:00__poniedziałek 2005-01-02 to poniedziałek i wartość o 2:00 jest 9 więc jest większa od wartości o 3:00 która jest 5, 2005-01-06 wartość o 2:00 jest 9 więc jest większa od wartości o 3:00 która jest 1 , 2005-01-11 wartośc o 2:00 jest 1 więc jest mniejsza od wartości o 3:00 która jest 6. Wychodzi na to że mamy trzy poniedziałki w których dwa razy wartość o 2:00 była wieksza od wartości o 3:00 i raz gdzie wartość o 2:00 była mniejsza o 3:00, interesuja mnie tylko ile razy wartość była wieksza o 2:00 niż o 3:00 więc wynik który powinienem uzyskać to 2. Ja pobieram z bazy wszystkie poniedziałki które mają czas 2:00 i 3:00 i na zewnątrz to wszystko analizuje ale niestety to trwa bardzo długo i chcę to zrobić w samą baze danych ale nie wiem czy jest to możliwe. Ten post edytował xeo 21.11.2005, 22:13:03 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 3 Dołączył: 22.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Primo: Tak po to są fora aby zadawać pytania, ale warto pokazać, że coś już zrobiłeś!
Secundo: logiczne jest, że wyjaśnienie SELECT znajduje się w manualu Tertio: Oto rozwiązanie: Założyłem tabelę testową o strukturze takiej jak Twoja tylko dodałem pole ID, które jest kluczem prymalnym a wiec wyglada to tak: ID | WARTOSC | DATA | TIME | DZIEN UWAGA: pole TIME ma następujący wygląd zgodny z formatem TIME: hh:mm:ss Należy złączyć tabelę z sobą samą więc raz ją nazywasz jako td1 a za drugim razem jako td2 (patrz: LEFT JOIN) potem masz polecenie ON, czyli względem czego złączyłeś, tutaj najważniejsza jest dala, bo chcesz porównywać ten jeden konkretnydzień. Godzina ma byc druga więc: td1.czas = '02:00:00' analogicznie dla td2.czas = '03:00:00' no i wartosc w td1 (tam gdzie jest godzina 2) ma byc wieksza niz w td2 (tam gdzie jest godzina 3) więc logiczny warunek: td1.wartosc > td2.wartosc Opcjonalnie możesz dodać warunek GROPU BY td1.ID gdyby okazało się że masz więcej niż jeden wpis z danej godziny. Mam nadizeję, że to jest wystarczająco jasne
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 28.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pole ID mam po prostu go nie podałem. Wielkie dzięki za rozwiązanie no i oczywiście za link z manualem.
![]() Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 16:44 |