![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 17.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam tabelę zawierającą dane z imprezy biegowej. Na imprezę składa się cykl 6 biegów. Tabela prócz takich danych jak id, imię, nazwisko, itd... zawiera również sześć kolumn w formacie czas (hh:mm:ss - wartość domyślna 00:00:00), do których po każdym z biegów wpisuje osiągnięte przez zawodników czasy. Na wynik końcowy składa się suma czterech najlepszych wyników spośród sześciu. Zawodnik ma przy tym możliwość ominięcia dwóch startów - musi skompletować cztery. Jak spośród wszystkich rekordów tabeli wybrać te, które w polach czas1, czas2, czas3, czas4, czas5, czas6 mają conajmniej cztery wyniki różne od 00:00:00, po czym ze wszystkich tych kolumn od czas1 do czas6 wybrać cztery o najniższej wartości (po sześciu biegach może ich być od 4 do 6), zsumować je i wyniki zapytania posortować, tak by wyświetlić rekordy w kolejności od najniższej sumy do najwyższej? Będę wdzięczny za jakieś wskazówki lub gotowe rozwiązania ![]() Pozdrawiam. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim masz błędną strukturę bazy danych, która na dobrą sprawę uniemożliwia jakiekolwiek normalne operowanie na niej. Powinieneś mieć dwie tabele:
1. Zawodnicy (id, imie, nazwisko, ...) 2. Biegi (id, id_zawodnika, nr_biegu, czas) Połączone ze sobą relacją jeden-do-wielu. Wtedy będziesz mógł to osiągnąć w miarę prostym zapytaniem: To zapytanie zwróci jednak sumę wszystkich 4, 5, bądź 6 biegów. By uzyskać sumę jedynie z 4 najkrótszych będziesz musiał przerobić delikatnie to zapytanie: http://www.xaprb.com/blog/2006/12/07/how-t...r-group-in-sql/ Ten post edytował Crozin 7.07.2014, 08:33:07 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 17.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jakieś sugerowane rozwiązanie? Jestem w połowie imprezy (3 biegi się już odbyły) i niedługo będą musiał coś pokazać
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Crozin przedstawił Ci rozwiązanie
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jakieś sugerowane rozwiązanie? Przerób bazę danych zgodnie z podanymi wytycznymi - możesz to zrobić kompletnie bezinwazyjnie w tej chwili.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 14:58 |