Ho questo problema, penso che potresti aiutarmi con.
Post scriptum Non sono sicuro di come chiamare questo, quindi se qualcuno trova un titolo più appropriato, ti preghiamo di farlo.
Sfondo
- Sto facendo questa applicazione per cercare le linee di transito degli autobus.
- Le linee di bus sono un numero a 3 cifre, sono uniche e non cambieranno mai.
- Il requisito è essere in grado di cercare le linee dalla fermata A per interrompere B.
- L'interfaccia utente ha già successo nel suggerire all'utente di utilizzare solo nomi di stop validi.
- Il requisito deve essere in grado di visualizzare se una rotta ha una linea diretta e, in caso contrario, visualizzare una combinazione a 2 e persino a 3 righe.
Esempio:
Devo passare dal punto A al punto D. Il programma dovrebbe mostrare:
- Se esiste una linea diretta A-D.
- In caso contrario, visualizza combinazioni di 2 linee alternative, come A-C, C-D.
- Se non ci sono combo a 2 righe, cerca combo a 3 righe: A-B, B-C, C-D.
Ovviamente, l'app dovrebbe visualizzare i numeri di linea del bus, nonché quando cambiare i bus.
Cosa ho:
Il mio database è strutturato come segue (il database effettivo e semplificato include posizioni, orari e quant'altro):
+-----------+
| bus_stops |
+----+------+
| id | name |
+----+------+
+-------------------------------+
| lines_stops_relationship |
+-------------+---------+-------+
| bus_line | stop_id | order |
+-------------+---------+-------+
Dove lines_stops_relationship
descrive una relazione molti-a-molti tra le linee del bus e le fermate.
Ordine, indica l'ordine in cui le fermate appaiono in una singola riga. Non tutte le linee vanno avanti e indietro e l'ordine ha significato (il punto A con l'ordine 2 arriva dopo il punto B con l'ordine 1).
Il problema
- Scopriamo se una linea può attraversare il percorso abbastanza facilmente. Cerca solo una singola linea che attraversi entrambi i punti nell'ordine corretto.
- Come posso trovare se c'è una combinazione di 2/3 linee? Stavo pensando di cercare una linea che corrisponda alla fermata della sorgente e una alla fermata della destinazione, e vedere se riesco a ottenere una fermata comune tra loro, dove l'utente può cambiare autobus. Come faccio a ricordare che smetti?
- La combinazione di 3 linee è ancora più complicata, trovo una linea per la fonte e una linea per la destinazione, e poi? Cerca una linea che ha 2 stop, suppongo, ma ancora, Come ricordo le fermate?
tl; dr
Come ricordo i risultati di una query per poterlo riutilizzare? Spero di ottenere questo risultato in una singola query (per ciascuna, una query per i percorsi a 1 linea, una query per 2 e una query per le combo a 3 righe).
Nota: non mi dispiace se qualcuno suggerisce un approccio completamente diverso da quello che ho, sono aperto a qualsiasi soluzione.
Assegnerà qualsiasi assistenza con un cookie e un upvote. Grazie in anticipo!