Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Kalkulator odległości
Forum PHP.pl > Forum > Przedszkole
i105n2k
Witam,

chciałbym skonstruować kalkulator liczący długość trasy pomiędzy kilkoma punktami na podstawie tabeli z odległościmai pomiędzy tymi punkatami i tabeli z kolejnością punktów na trasie. Mam dwie tabele:

a) Trasa
id|punkt |kolejność
1|Katowice | 1
2| Warszawa | 3
3| Gdańsk | 2

a) Odległość
id|Od |Do |Dystans
1|Katowice | Gdańsk |800
2| Warszawa | Katowice |300
3| Gdańsk | Warszawa|500

Próbowałem szukać rozwiązania w Google natomiast znajdowałem tylko skrypty wykorzystujące mechanizm liczenia dystansu ze współrzednych, zaś tu potrzebuję sumowania odcinków z bazy w odpowiedniej kolejności. Jak się do tego zabrać? Myślałem o pętli while wylistowaniu wszystkich trasy i zsumowaniu dystansów lecz zupełnie nei wiem jak to zrobić.

Crozin
  1. SELECT sum(dystans) FROM odleglosci WHERE (punkt_od, punkt_do) IN(
  2. SELECT a.punkt AS punkt_od, b.punkt AS punkt_do
  3. FROM trasy a
  4. INNER JOIN trasy b ON a.kolejnosc = b.kolejnosc - 1
  5. ORDER BY a.kolejnosc
  6. );
http://sqlfiddle.com/#!15/b6425/2

Wewnętrzne zapytanie wybiera pary miast "od - do", zewnętrzne to już proste sumujące dystans.
i105n2k
Dzięki za odpowiedź, wygląda bardzo fajnie. Ostatni mój problem to wyświetlenie wyniku zapytania w PHP.

  1. <?php
  2. // Połaczenie z bazą danych
  3. require "connection.php";
  4. connection();
  5.  
  6. $dystans = mysql_query("select sum(dystans) from odleglosci where (punkt_od, punkt_do) in(
  7. select a.punkt AS punkt_od, b.punkt AS punkt_do
  8. from trasy a
  9. inner join trasy b on a.kolejnosc = b.kolejnosc - 1
  10. order by a.kolejnosc");
  11.  
  12. echo "Dystans:".$dystans;
  13.  
  14. ?>


Po uruchomieniu wychodzi, że zmienna $dystans jest pusta. Gdzie robię błąd ?
Crozin
1. Używasz funkcji mysql_*() zamiast PDO.
2. W ogóle nie sprawdzasz poprawności wykonania zapytań (mysql_error w przypadku mysql_*()).
3. Funkcja mysql_query nie zwraca żadnych wyników, robi to mysql_fetch_array i pokrewne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.