problem z group by? |
problem z group by? |
16.12.2011, 10:09:26
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) |
Witam,
Z góry przepraszam za to, że pytam o prost sprawy. Bardzo mi sie spieszy z rozwiązaniem tej kwestii i nie potrafię znaleźć rozwiązania więc może ktoś mi pomoże. otóż ma tabelkę Objectid input_fid near_fid distance 11,00 0,00 53,00 8221,62 133,00 1,00 56,00 16938,04 243,00 2,00 33,00 8079,95 334,00 3,00 43,00 15139,67 431,00 4,00 36,00 32085,84 455,00 5,00 46,00 12959,51 572,00 6,00 17,00 12869,29 638,00 7,00 77,00 11443,15 759,00 8,00 14,00 14203,49 831,00 9,00 62,00 13132,38 937,00 10,00 85,00 15232,27 1035,00 11,00 72,00 16046,21 1127,00 12,00 8,00 28397,36 1186,00 13,00 79,00 12050,02 1306,00 14,00 8,00 14203,49 1431,00 15,00 74,00 18573,17 1478,00 16,00 14,00 17488,94 1557,00 17,00 6,00 12869,29 1669,00 18,00 38,00 202651,54 1730,00 19,00 70,00 10784,56 1821,00 20,00 62,00 13923,87 1926,00 21,00 85,00 13091,27 2038,00 22,00 73,00 20537,75 2072,00 23,00 90,00 8857,32 2243,00 24,00 67,00 9174,08 2333,00 25,00 67,00 7053,37 2396,00 26,00 52,00 13322,48 2461,00 27,00 42,00 17165,78 2574,00 28,00 61,00 13831,92 2635,00 29,00 71,00 17653,86 2734,00 30,00 84,00 11584,38 2813,00 31,00 45,00 13662,87 2806,00 31,00 20,00 14141,01 2807,00 31,00 79,00 20203,97 2812,00 31,00 62,00 23792,41 2825,00 31,00 21,00 26968,16 2803,00 31,00 13,00 27057,03 2826,00 31,00 85,00 27762,05 2817,00 31,00 30,00 28320,68 2811,00 31,00 19,00 32523,71 2805,00 31,00 9,00 34356,95 2824,00 31,00 84,00 35478,76 2827,00 31,00 10,00 36756,91 2810,00 31,00 70,00 38232,21 2814,00 31,00 81,00 38742,74 2823,00 31,00 89,00 42037,02 2816,00 31,00 6,00 42261,82 ... w której podane sa odległości pomiędzy input_fid i near_fid. Potrzebuję tylko wartości z najmniejszymi odległościami (tak jak w przypadku input_fid od 0 do 30). Wartości od 0 do 30 usuwałem ręcznie, ale moja cierpliwośc się skończyła. Wiem, że na pewno jakoś się to da zrobić w sql. Niestety moje próby z distictem, inner joinem, minimum, group by, doprowadziły tylko do połowicznego efektu:( Kwerenda2: SELECT DISTINCT input_fid, min(distance) FROM odl1950 group by input_fid niestety nie pokazuje kolumny near_fid. Kwerenda3: SELECT * FROM kwerenda2 INNER JOIN odl1950 ON kwerenda2.expr1001=odl1950.distance; pokazała w zasadzie to co chciałem tylko, że wartości wyświetlane sa podwójnie (po dwa wiersze w tabeli) Nie wiem co z tym zrobić. Pomoże ktoś? Dziekuję |
|
|
16.12.2011, 10:31:52
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) |
To nie starczy? -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
16.12.2011, 10:42:12
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) |
no niestety cos nie działa:(
pojawia sie info: Odwołanie cykliczne spowodowane przez alias 'distance' na liście SELECT definicji kwerendy. jak zmieniam na distance 1: SELECT input_fid, near_fid, min(distance) AS distance1 FROM odl1950 GROUP BY input_fid to znowu jest problem z group by: Problem z wykonaniem kwerendy, która nie zawiera podanego wyrażenia near-fid jako elementu funkcji agregującej |
|
|
16.12.2011, 10:57:08
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) |
-------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
16.12.2011, 16:18:08
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) |
no niestety
uzupełniłem przecinek bo zgłaszało błąd składni: SELECT input_fid, (SELECT near_fid, min(distance) FROM odl1950), near_fid2 FROM odl1950 GROUP BY input_fid ale dalej jest nie to:( Komunikat: "Napisano podkwerendę, która może zwrócić więcej niż jedno pole, bez użycia zastrzeżonego słowa EXISTS w klauzuli FROM kwerendy głównej. Zmień instrukcję podkwerendy tak, any wybierała tylko jedno pole." Można zmienić tylko jak? |
|
|
16.12.2011, 16:23:19
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
jak dałeś zestaw danych to z tych danych daj jeszcze dokładnie zestaw danych wynikowych gdyż np. ja choć przeczytałem ten temat wcześniej to ni w ząb nie zrozumiałem o co Ci chodzi...
-------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
16.12.2011, 16:34:36
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) |
jasne...
rzeczywiście może jest trochę mało czytelnie... otóż: tabela przedstawia odległości pomiędzy punktami, mierzone każdy do każdego (pomiędzy punktami o nr w kolumnach input_fid i near_fid) Wiersze z wartościami input_fid do wartości 30 wyczyściłem ręcznie w taki sposób, że zostało tylko po jednym wierszu dla kazdego punktu z input_fid z najkrótszym dystansem. I to samo chciałbym uzyskać dla pozostałych, a że jest ich ponad kilkaset fajnie by było użyć kwerendki. |
|
|
16.12.2011, 17:45:46
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
Widzę, że masz unikalne Objectid... dawno nie pisałem SQL'a więc może dało się to lepiej zrobić... u mnie to zadziałało:
a zapytanie z grupowaniem mogło by wyglądać w ten sposób:
w zasadzie to ostanie ORDER BY mógłbyś sobie darować gdyż to tylko kosmetyczna sprawa wyświetlenia... Ten post edytował zegarek84 16.12.2011, 18:31:21 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
16.12.2011, 18:28:28
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) |
u mnie w accessie 2007 wywala niestety błąd składniowy:(
a jednak to drugie działą bardzo dziękuję! |
|
|
16.12.2011, 18:29:26
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
sorki ale nie zauważyłem, że to ma być do accessa - w zasadzie nigdy go nie używałem...
ps. a może w pierwszym zapytaniu czepiał się o apostrofy "`" przy Objectid?? - sprawdź teraz z czystej ciekawości ;] Ten post edytował zegarek84 16.12.2011, 18:32:43 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
16.12.2011, 18:53:55
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) |
no cóż apostrof nie pomógł ale nic to - ważne, że drugi sposób działa - jeszcze raz dziękuję
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 03:32 |