Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyświetlenie rekordów spełniających warunek, 2 miejscowości w tym samym transporcie
pionas
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 2
Dołączył: 25.03.2009
Skąd: Pionki

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


Cześć,

mam pewien problem.
Otóż zaprojektowałem sobie tak tablicę (wydawało mi się że tak najlepiej):
Cytat
BusWay:
ID
Name

City:
ID
Name

CityToBusWay
ID_BusWay
ID_City


jak zrobić zapytanie które wyświetli tylko te połączenia BusWay w których będą dwie przeze mnie podane miejscowości.
Np. Chcę jechać Radomia do Warszawy.
Zrobiłem sobie coś takiego:
  1. SELECT * FROM BusWay a, CityToBusWay b WHERE a.ID=b.ID_BusWay AND b.ID_City IN (SELECT ID FROM `city` WHERE name IN("Radom","Warszawa"))


Jednak to wyświetla wszystkie wpisy które zawierają w połączeniu jedno z tych miast, jak zrobić aby wyświetlało tylko te gdzie są podane oba miasta?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
netmare
post
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


Ogólnie rzecz biorąc pogubiłem się trochę w waszym dialogu, natomiast rozwiązaniem problemu z pierwszego postu jest chyba (nie chciało mi się przetestować) zapytanie poniżej:

  1. SELECT
  2.  
  3. BusWay.*
  4.  
  5. FROM
  6. BusWay
  7.  
  8.  
  9. INNER JOIN CityToBusWay AS Pomocnicze1
  10. ON Pomocnicze1.ID_BusWay = BusWay.ID
  11. INNER JOIN City AS SzukaneMiasto1
  12. ON SzukaneMiasto1.ID = Pomocnicze1.ID_City AND SzukaneMiato1.Name='Radom'
  13.  
  14.  
  15. INNER JOIN CityToBusWay AS Pomocnicze2
  16. ON Pomocnicze2.ID_BusWay = BusWay.ID
  17. INNER JOIN City AS SzukaneMiasto2
  18. ON SzukaneMiasto2.ID = Pomocnicze2.ID_City AND SzukaneMiato2.Name='Warszawa'
  19.  
  20.  


I tutaj jeszcze mała uwaga, zapytanie nie jest odporne na to czy chcesz pojechać z Radomia do Warszawy czy odwrotnie, bo to chyba będą dwie osobne trasy w twojej bazie, ale możesz to uwzględnić dodając do CityToBusWay kolumnę np. StopOrder (int) i na końcu zapytania dokleić
  1. WHERE Pomocnicze2.StopOrder > Pomocnicze1.StopOrder


Ilość miast możesz zwiększyć kopiując jeden z czteroliniowych ciągów związanych z miastem, zmienić numer na kolejny i nazwę miasta na poszukiwaną.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 03:48