Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mam coś dla SQL-maniaków, problem z zapytaniem zagnierzdzonym powiązanym..
peksiarz
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.10.2006

Ostrzeżenie: (10%)
X----


mam zapytanie:

  1. SELECT pk1.id_kursu, pk1.id_przystanku, pk1.numer
  2. FROM przystanek_kursu pk1 (..)
  3. WHERE (..)pk1.id_przystanku = '$pocz' AND pk1.id_kursu IN (SELECT pk1.id_kursu
  4. FROM przystanek_kursu pk2
  5. WHERE pk2.id_przystanku = '$kon'



Powyższe zapytanie wyszukuje kursy na których jest zarówno przystanek początkowy jak i końcowy ale niestety nie wiem w jaki sposób wykluczyć kursy, które nie spełniają warunku:
Kod
numer przyst początkowego < numeru przyskanku końcowego

(czyli oczywiście przystanek pocz. musi być przed przystankiem końcowym na danym kursie)


Powyższe zapytanie zredukowałem do jednej tabeli aby nie zaciemniać.
Tabela:
"przystanek kursu' - id_kursu, id_przystasnku, numer

'$pocz' i '$kon' to oczywiście odwołania do zmiennych php zawierające konkretne dane

nie wiem czy dopisanie do zapytania wewnętrznego czegoś takiego ma sens:
  1. pk1.numer < pk2.numer




ma ktoś jakiś pomysł ?

Ten post edytował peksiarz 7.12.2006, 15:39:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
wipo
post
Post #2





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


A spróbuj tak:
Kod
SELECT pk1.id_kursu, pk1.id_przystanku, pk1.numer
FROM przystanek_kursu pk1 (..)
WHERE (..)pk1.id_przystanku = '$pocz' AND pk1.id_kursu IN (SELECT pk1.id_kursu
                                         FROM przystanek_kursu pk2
                                         WHERE pk2.id_przystanku = '$kon' ) and pk1.numer < pk2.numer

Czy to ma sens? Nie wiem bo nic nie napisałeś co to są za numery
Jeżeli są to kolejne przystanki i autobus jedzie w jedną stronę to ma sens, w przeciwnym nie wiem


--------------------
Go to the top of the page
+Quote Post
peksiarz
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.10.2006

Ostrzeżenie: (10%)
X----


Cytat
Czy to ma sens? Nie wiem bo nic nie napisałeś co to są za numery
Jeżeli są to kolejne przystanki i autobus jedzie w jedną stronę to ma sens, w przeciwnym nie wiem


numery - sa to numery identyfikacyjne przystaknów na danym kursie a jeśli chodzi o kurs to w moim będzie tak, że gdy autobus jedzie z powrotem to już będzie inny kurs -będzie miał osobne id_kursu (chodzi o to, że często autobusy z powrotem jeżdzą troche inną trasą)

pk1 i pk2 są to oczywiście skrótowe nazwy które utworzyłem do tabeli przystanek kursu.


Myśle że końcówka dla tych założeń jest nielogiczna..
Kod
(..) AND pk1.numer < pk2.numer

niemożliwe jest aby w jednym cyklu zapytania SELECT porównywać numery różnych przystanków - no i to jest zasadniczy problem worriedsmiley.gif

Ten post edytował peksiarz 7.12.2006, 17:59:18
Go to the top of the page
+Quote Post
wipo
post
Post #4





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


Jak chcesz je posortować malejąco lub rosnąco to zastosuj ORDER BY cos tam
Nie napisałeś dokładnie co chcesz uzyskać jako wynik końcowy więc strzelam


--------------------
Go to the top of the page
+Quote Post
peksiarz
post
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.10.2006

Ostrzeżenie: (10%)
X----


nie o to mi chodzi...

wyjaśnie to inaczej:
Chce wyszukać dwa różne przystanki (czyli 2 dane z jednego argumentu)

Takie zapytanie jest mi potrzebne do programu, w którym użytkownik będzie podawał przystanek początkowy i końcowy a zapytanie wyszuka z bazy kursy na których są te przystanki w odp kolejności.

Jeśli coś jeszcze nie jest jasne to prosze pytać.

Ten post edytował peksiarz 7.12.2006, 20:38:39
Go to the top of the page
+Quote Post
wipo
post
Post #6





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


A coś takiego:
select t1.pkt1, t2.pkt2 from tabela t1 join tabela t2 on t1.linia=t2.linia where t1.pkt1<t2.pkt2 and t1.pkt1='$pocz' and t2.pkt2='$konc'


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 00:05