Ho questo problema, penso che potresti aiutarmi.
PS Non sono sicuro di come chiamare questo, quindi se qualcuno trova un titolo più appropriato, per favore modifica.
sfondo
- Sto facendo questa applicazione per la ricerca di linee di transito degli autobus.
- Le linee di autobus sono un numero di 3 cifre, è univoco e non cambierà mai.
- Il requisito è poter cercare le linee dallo stop A allo stop B.
- L'interfaccia utente è già riuscita a suggerire all'utente di utilizzare solo nomi di arresto validi.
- Il requisito è essere in grado di visualizzare se un percorso ha una linea diretta e, in caso contrario, visualizzare una combinazione di 2 linee e persino di 3 linee.
Esempio:
Devo passare dal punto A al punto D. Il programma dovrebbe mostrare:
- Se c'è una linea diretta AD.
- In caso contrario, visualizza combinazioni di 2 righe alternative, come AC, CD.
- Se non ci sono combinazioni di 2 righe, cerca le combinazioni di 3 righe: AB, BC, CD.
Naturalmente, l'app dovrebbe visualizzare i numeri delle linee degli autobus, nonché quando cambiare autobus.
Ciò che ho:
Il mio database è strutturato come segue (il database semplificato, effettivo include posizioni, orari e quant'altro):
+-----------+
| bus_stops |
+----+------+
| id | name |
+----+------+
+-------------------------------+
| lines_stops_relationship |
+-------------+---------+-------+
| bus_line | stop_id | order |
+-------------+---------+-------+
Dove lines_stops_relationship
descrivi una relazione molti-a-molti tra le linee di autobus e le fermate.
Ordine, indica l'ordine in cui le fermate appaiono in una sola riga. Non tutte le linee vanno avanti e indietro e l'ordine ha significato (il punto A con ordine 2 segue il punto B con ordine 1).
Il problema
- Scopriamo se una linea può attraversare il percorso abbastanza facilmente. Basta cercare una singola riga che attraversa entrambi i punti nell'ordine corretto.
- Come posso sapere se esiste una combinazione di 2/3 linee? Stavo pensando di cercare una linea che corrisponda alla fermata di origine, e una per la fermata di destinazione, e vedere se riesco a trovare una fermata comune tra loro, dove l'utente può cambiare bus. Come ricordo quella fermata?
- La combinazione a 3 righe è ancora più complicata, trovo una riga per l'origine e una riga per la destinazione, e quindi cosa? Cerca una linea che ha 2 fermate immagino, ma ancora una volta, come ricordo le fermate?
tl; dr
Come ricordo i risultati di una query per poterlo riutilizzare? Spero di raggiungere questo obiettivo in una singola query (per ciascuno, una query per percorsi a 1 linea, una query per 2 e una query per combinazioni a 3 linee).
Nota: non mi importa se qualcuno suggerisce un approccio completamente diverso da quello che ho, sono aperto a qualsiasi soluzione.
Assegnerà qualsiasi assistenza con un cookie e un voto. Grazie in anticipo!