複数のテーブルとデータを照合するためにこのクエリを作成しましたが、少し複雑に感じられます。複数のテーブルで複数のJOINSを使用するSQLクエリ
私は、次の表から選択する必要があります。
leads.sequence = instructors_options.instructor_seq
leads.sequence = instructor_calendar.instructor_seq
と:
- には、以下の関係を使用して
instructor_calendar
- lead.lead_type = 'インストラクター' は
- instructors_options.option_name = 'pupil_cap' AND instructors_options.value> 0
- instructors_options.option_name = 'car_type' AND instructors_options.value = '変数」
- instructors_options.option_nameは= 'areas_covered' AND instructors_options.valueは= 'AVAILABLE変数'
- instructor_calendar.pupil_name = '' AND instructor_calendar.date> = '変数' AND instructor_calendar.date < = '' 変数
instructors_options.option_name = 'diary_updates' AND instructors_options.value = '1'
SELECT i.sequence as instructor_seq, ic.date AS date, ic.start_time AS start_time, ic.end_time AS end_time FROM leads i LEFT JOIN instructors_options io ON i.sequence = io.instructor_seq AND (io.option_name = 'pupil_cap' AND io.value > '0') RIGHT JOIN instructors_options io2 ON i.sequence = io2.instructor_seq AND io2.option_name = 'car_type' AND io2.value = '".$bookingData["car_type"]."' RIGHT JOIN instructors_options io3 ON i.sequence = io3.instructor_seq AND io3.option_name = 'areas_covered' AND (io3.value LIKE '".substr($postcode, 0, 1)."' OR io3.value LIKE '".substr($postcode, 0, 2)."' OR io3.value LIKE '".substr($postcode, 0, 3)."' OR io3.value LIKE '".substr($postcode, 0, 4)."') RIGHT JOIN instructors_options io4 ON i.sequence = io4.instructor_seq AND io4.option_name = 'diary_updates' AND io4.value = '1' RIGHT JOIN instructor_calendar ic ON i.sequence = ic.instructor_seq AND ic.pupil_name = 'AVAILABLE' AND ic.date >= '".ChangeDateFormat($date, 'Y-m-d')."' AND ic.date <= '".date('Y-m-d', strtotime($date. ' + 7 days'))."' WHERE i.lead_type = 'Instructor' GROUP BY date ORDER BY date ASC, start_time ASC
誰かが私が私が
はありがとう正しくそれを行っていることを確認するために私のクエリを更新助けてください!
これはMySQLの質問ですか、SQLServerの質問ですか?これらは2つの非常に異なる製品で、タグが付けられています。どうして? – pmbAustin
申し訳ありません - 私の間違いは、誤ってsql-serverをクリックしたに違いありません。 – charlie
最初に気がついたのは、「必ず」マッチを探していますが、左と右のジョインがあります。あなたはINNER JOINを望んでいませんか?そして、余分な結合(io4)があるか、要件リストでそれを見逃しています:) –