私はちょうどMySQLの学習を始めましたが、データベースからの一致するフライトを抽出するのに問題があります。私のデータベースには、アウトバウンドおよびリターンフライトが1週間離れた倍数の架空のフライトデータがあります。MySQLウェブプロジェクトの一致する発信と返信のフライトを返すクエリ
ユーザーが選択した出発日の+/- 3日間、出入りするフライトのペアが存在するかどうかを確認し、フェッチするクエリを設計しようとしています。私は、フライトをアウトバウンドフライトで注文し、その後、一致するリターンフライトをPHPのmysql_fetch_array whileループで出力する必要があります。
これまでのところ、私はWHERE句内の条件(WHERE句内の条件を選択してアウトバウンドフライトが存在するかどうかを確認しています)が実際に存在するかどうかを調べています。 1つの日付をテストするときにmysqlのwhileループを使用できない限り、それを日付範囲に統合する方法がわかりませんか?また、WHERE句内にIF文を置くのは理想的ではありません返却日がアウト日にユーザーフォーム(すなわち1週間、2週間など)で「継続」オプションを追加することにより、PHPで計算される。
時間。
私は私が持っているクエリのコードをコピーしましたこれまでのところ 私は希望の結果を達成するためのよりシンプルな/より良い方法があり、あらゆる指針に感謝します。私のコードは+/- 3日間の検索をどのように実装し、結果をアウトバウンドとリターンのフライトペアの順序で保持するかわからないので、それに供給された特定の日付だけの一致するフライトのペアを返します。
おかげで、 ゲイリー
SELECT
sched.flight_schedule_id, dep_airport, dest_airport, code, dep_time, arr_time, flight_time, dep_date, dep.airport_name, dep.airport_country, adult_flight_price, dest.airport_name, dest.airport_country, plane.no_seats, sum(adult_seats_reserved), sum(child_seats_reserved)
FROM
flight fli
INNER JOIN flight_schedule sched
ON fli.flight_id = sched.flight_id
INNER JOIN airport dep
ON fli.dep_airport = dep.airport_code
INNER JOIN airport dest
ON fli.dest_airport = dest.airport_code
INNER JOIN plane_type plane
ON fli.plane_id = plane.plane_id
LEFT JOIN flight_inventory inv
ON sched.flight_schedule_id = inv.flight_schedule_id
WHERE
IF (EXISTS(SELECT
sched.flight_schedule_id, dep_airport, dest_airport, code, dep_time, arr_time, flight_time, dep_date, dep.airport_name, dep.airport_country, adult_flight_price, dest.airport_name, dest.airport_country
FROM
flight fli
INNER JOIN flight_schedule sched
ON fli.flight_id = sched.flight_id
INNER JOIN airport dep
ON fli.dep_airport = dep.airport_code
INNER JOIN airport dest
ON fli.dest_airport = dest.airport_code
LEFT JOIN flight_inventory inv
ON sched.flight_schedule_id = inv.flight_schedule_id
WHERE
dep.airport_name = '$to' AND dest.airport_name = '$from' AND sched.dep_date = '$return'),
(dep.airport_name = '$from' AND dest.airport_name = '$to' AND sched.dep_date = '$outdate')
OR
(dep.airport_name = '$to' AND dest.airport_name = '$from' AND sched.dep_date = '$return'), '')
GROUP BY
sched.flight_schedule_id
この質問は表の回路図を必要とします。あなたの質問からこれを推測するのは楽しいことではありません。 – Basti