Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy jest możliwość wyszukania w jednym zapytaniu SQL dwóch różnych przystanków należących do jednego kursu ?
Forum PHP.pl > Forum > Bazy danych > MySQL
peksiarz
mam zapytanie:

  1. $query = "SELECT pk1.id_kursu, k.nazwa_kursu, pk1.id_przystanku, pk1.numer, pk2.id_przystanku, pk2.numer
  2. FROM przystanek_kursu pk1, przystanek_kursu pk2, przystanek p, kursy k
  3. WHERE p.id_przystanku = pk1.id_przystanku AND p.id_przystanku = pk2.id_przystanku AND k.id_kursu = pk1.id_kursu AND pk1.id_kursu = pk2.id_kursu AND pk1.id_przystanku = '$pocz' AND pk2.id_przystanku = '$kon' AND pk1.numer < pk2.numer ";


moje pytanie dotyczy dwóch przedostatnich lini. Czy jest możliwość wyszukania w jednym zapytaniu dwóch różnych przystanków należących do jednego kursu ?
Powyższe zapytanie testowałem pomijając 2 ostatnie linie, wtedy wyświetlało mi kursy na których był przystanek $pocz (czyli ok) Gdy dodałem dwie ostatnie linie to nic nie wyświetlało a powinno wg. przykładowych danych zapisanych w bazie. Czy to znaczy że bez zagdzieżdzonej instrukcji select sie nie obejdzie ? worriedsmiley.gif


--
prosze uzywac bbcode -- latwiej sie czyta // dr_bonzo
KILIUSZKIN
Na przyszłość powinieneś podać strukturę tabel i relacje między nimi, bo odpowiadający na takiego posta musi przyjmować niekoniecznie właściwe założenia.

1.) Nie bardzo czuję, po co w tym zapytaniu robi tabelka przystanek ?
Nie wyświetlasz żadnego pola z tej tabeli.

2. ) Nie podoba mi się to wyrażenie:
WHERE p.id_przystanku = pk1.id_przystanku AND p.id_przystanku = pk2.id_przystanku
Nie prościej od razu pk1.id_przystanku=pk2.id_przystanku
Ale w tym zapytaniu wydaje mi się, że ten warunek jest błędny, bo szukasz różnych przystanków kursu.
dlatego spróbuj wogóle pominąć ten warunek.

Good luck!
peksiarz
moje zapytanie SQL odnosi się do takich tabel:

-'Przystanek' - tabela zawiera dane przystanków
id_przystanku, nazwa_przystanku, czy_glowny

-'Kursy'
- zawiera nazwy kursów
id_kursu, nazwa

-Przystanek kursu' - zawiera przystanki na danym kursie
id_pk, numer, czy, ostatni, id_kursu, id_przystanku


relacje wynikają z podobieństwa nazw - wytłuszczone argumenty to u mnie primary key-e


Cytat
1.) Nie bardzo czuję, po co w tym zapytaniu robi tabelka przystanek ?
Nie wyświetlasz żadnego pola z tej tabeli.

2. ) Nie podoba mi się to wyrażenie:
WHERE p.id_przystanku = pk1.id_przystanku AND p.id_przystanku = pk2.id_przystanku
Nie prościej od razu pk1.id_przystanku=pk2.id_przystanku
Ale w tym zapytaniu wydaje mi się, że ten warunek jest błędny, bo szukasz różnych przystanków kursu.
dlatego spróbuj wogóle pominąć ten warunek.


AD1) Tabela przystanek identyfikuje każdy przystanek, natomiast tabela Przystanek kursu zawiera poszczególne przystanki na danym kursie.

AD2) W moim przypadku nie moge zastosować
Cytat
pk1.id_przystanku=pk2.id_przystanku
ponieważ kombinuje nad zapytaniem wyszukującym dwóch różnych przystanków na tym samym kursie spośród wielu zapisanych w bazie z których początkowy to $pocz a końcoyw to $kon.
Prawdopodobnie jest to możliwe w stosując zagniezdżony select... hmm tylko jak go sformuować

jeśli jeszcze czegoś niedopisałem to prosze krzyczeć tongue.gif


Kombinuje nad tym na różne stny ale dalej w tym miejscu stoje.. ma ktoś jakiś pomysł ? worriedsmiley.gif
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.