私はあなたが私を助けるかもしれないと思うこの問題を抱えています。
PS私はこれをどのように呼ぶかわからないので、誰かがより適切なタイトルを見つけたら、編集してください。
バックグラウンド
- このアプリケーションは、バス路線を検索するために作成しています。
- バスラインは3桁の数字であり、一意であり、変更されることはありません。
- 要件は、ストップAからストップBまでの行を検索できることです。
- ユーザーインターフェイスは、有効なストップ名のみを使用するようにユーザーにヒントを出すことにすでに成功しています。
- 要件は、ルートに直通線があるかどうかを表示でき、そうでない場合は2行と3行の組み合わせを表示できることです。
例:
ポイントAからポイントDに到達する必要があります。プログラムは次のように表示されます。
- ダイレクトラインADがある場合。
- そうでない場合は、AC、CDなど、2行の代替コンボを表示します。
- 2行のコンボがない場合は、3行のコンボ(AB、BC、CD)を検索します。
もちろん、アプリはバスの路線番号とバスをいつ切り替えるかを表示する必要があります。
私が持っているもの:
私のデータベースは次のように構成されています(簡略化された、実際のデータベースには場所と時間などが含まれています):
+-----------+
| bus_stops |
+----+------+
| id | name |
+----+------+
+-------------------------------+
| lines_stops_relationship |
+-------------+---------+-------+
| bus_line | stop_id | order |
+-------------+---------+-------+
どこlines_stops_relationship
のバスラインと停止の間の多対多の関係を説明します。
順序、ストップが1行に表示される順序を示します。すべての行が行き来するわけではなく、順序に意味があります(順序2のポイントAは順序1のポイントBの後に来ます)。
問題
- ラインがルートを十分簡単に通過できるかどうかを確認します。両方のポイントを正しい順序で通過する単一の行を検索するだけです。
- 2/3行のコンボがあるかどうかを確認するにはどうすればよいですか?出発地の停留所と目的地の停留所に一致する行を検索し、それらの間に共通の停留所があり、ユーザーがバスを切り替えることができるかどうかを確認しようと考えていました。その停止をどのように覚えていますか?
- 3行のコンボはさらにトリッキーです。ソースの行と宛先の行を見つけましたが、次に何をしますか?ストップが2つある行を検索しますが、繰り返しますが、ストップをどのように覚えていますか?
tl; dr
クエリの結果を覚えて、再び使用できるようにするにはどうすればよいですか?これを単一のクエリ(1行のルートのクエリ、2行のクエリ、3行のコンボのクエリ)で達成したいと考えています。
注:誰かが私が持っているものとはまったく異なるアプローチを提案するかどうかは気にしませんが、私はどんな解決策も受け入れています。
クッキーおよびアップ投票に関する支援を提供します。前もって感謝します!