2017-12-30 27 views
-1

に基づいてデータを取得等しいのみiがPHP MYSQLは私が二列に2つの列をチェックまたは比較する必要がテーブルを有する2つの一致する行列

私のテーブル構造が

id | route_id | stop_id | bus_id | bus_time | trip | direction 
あるデータを取得するために必要

私は次のクエリを実行した場合

select routes.route_name,stops.stop_name,buses.bus_name,bus_timings.bus_time,bus_timings.trip,bus_timings.bus_direction from `bus_timings` 
inner join `stop_orders` on `stop_orders`.`id` = `bus_timings`.`stop_order_id` 
inner join `routes` on `stop_orders`.`route_id` = `routes`.`id` 
inner join `stops` on `stop_orders`.`stop_id` = `stops`.`id` 
inner join `buses` on `buses`.`id` = `bus_timings`.`bus_id` 
where `stops`.`stop_name` in ("sydney","melborne") 

出力

1 | route_1 | Sydney | bus_1 | 07:05 :00 | 1 |1 
2 | route_1 | Melbourne| bus_2 | 07:35:00 |1 |1 

が、既存のクエリでバスはシドニー間を移動されていない場合でも、私はメルボルン結果 を取得します。 私はバスの落下名やメルボルン

シドニー間の移動
+0

可能であれば、サンプルデータを表示できますか?また、特定のバスがAからBへ移動するのをどのように知っていますか?私は出発地点であると想定しているストップIDだけを格納しています。 – RohitS

+0

@ RohitS.iが質問 – vision

+0

を更新してくれてありがとうございますが、まだスキーマがわかりません。私はstop_orderが次の停止を示していることを意味していますか? is stop_idはルートIDですか? trip_directionもroute_idですか?ちょうど支援しようと..:Dの意味で – RohitS

答えて

1

くらいファズせずに、それを行うための簡単な方法を取得する必要があり、そしてuはPHP、 を使用して言及したように一つだけwhere句クエリステートメント内と比べて使用しますあなたはシドニーとメルボルン間のバスを取得した後、PHP、例えば 、 を使用してデータをフィルタリングし、foreachループを作成し、選択された時間であれば条件を使用します。

配列を使用したい場合は、配列検索機能を使用して各レコードの時刻を一致させ、別の配列にキーを取得します。 結果配列には、都市間および選択された時間の間のバスでフィルタリングされたデータが格納されます。

関連する問題