![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 2.11.2005 Skąd: Radomsko Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich, mam mały problem
przeczytałem post Zapytanie wizążące rekordy w pary mój problem jest podobny ale dzięki temu postowi jakoś nie mogę sobie poradzić ![]() Otóż mam tabelę id|x|y|A --------- 1|1|1|1 2|2|3|1 3|3|2|1 4|4|4|0 5|6|6|0 6|5|4|0 w kolumnach x, y są zapisane współrzędne punktu w układzie współrzędnych, natomiast A oznacza do jakiej grupy należy, np. 1 to x, a O to kółko na wykresie. chcę wyznaczyć parę punktów, których odległość między nimi jest najmniejsza, matematycznie jest to rozwiązane : sqrt( (x2-x1)^2 + (y2-y1)^2) (odległość 2 punktów w układzie) stworzyłem takie zapytanie :
ale to zapytanie wyświetla mi aż 18 wyników, 2 razy to samo tylko odwrotnie, i nie wiem jak z tego wyświetlić parę o najmniejszej odległości ![]() jakieś pomysły ![]() Ten post edytował banpl 23.05.2009, 01:48:11 -------------------- Warsztat :: Windows7 / Ubuntu | PHP 5 | MySQL 5 | Eclipse / NetBeans | Opera / Firefox
|
|
|
![]() |
![]() ![]()
Post
#2
|
|
![]() Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) ![]() ![]() |
Ja bym spróbował to Twoje zapytanie umieścić, jako podzapytanie i z niego pobierać niezdublowane pary, określając odpowiedni warunek. Poza tym przy takim łączeniu tabel w zapytaniu zawsze dostaniesz iloczyn kartezjański i na tym iloczynie system bazodanowym wykonuje zapytanie, stąd pojawiają się odwrotne duplikaty. Istnieje też możliwość, że napiszesz sobie funkcję w T-SQL, która Twój otrzymany zbiór sprawdzi, rekord po rekordzie i wyrzuci duplikaty.
-------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 2.11.2005 Skąd: Radomsko Ostrzeżenie: (0%) ![]() ![]() |
yyy, trochę się nie orientuję jak to wykonać
![]() możesz podać jakiś przykład, wskazówkę jak to wykonać, może kawałek kodu ![]() a czy takie rozwiązanie ma sens ![]()
mam wyświetloną parę punktów pomiędzy którymi jest najmniejsza odległość, oczywiście jeśli jest inna para, która ma taka samą odległość to jest ignorowana -------------------- Warsztat :: Windows7 / Ubuntu | PHP 5 | MySQL 5 | Eclipse / NetBeans | Opera / Firefox
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.06.2025 - 22:03 |