データベースに3つのテーブルがあります。
employee_log
job_log
クルーログ
新しいジョブが作成されると、従業員がそれに割り当てられるため、「crew_log」テーブルにエントリが作成されます。
私がやろうとしているのは、type = 2属性(つまり、彼らがスーパーバイザーであることを意味する)を持つ各従業員を(employee_logから)フェッチしてから、crew_logをクエリに参加させることです。
各従業員は「crew_log」に複数のアクティブなジョブを持つことができるため、目標はその従業員のすべてのアクティブなジョブを配列で返すことです。
これまでの私のクエリは次のようになります。
SELECT el.id, cl.job_id
FROM employee_log AS el
JOIN crew_log AS cl
ON el.id=cl.employee_id
AND cl.start_date >= CURDATE()
WHERE el.type=2
GROUP BY cl.employee_id
もちろん正しくありませんが、私の問題を視覚化するのに役立つかもしれません。
もちろん、これは別の方法で行うこともできます...しかし、パフォーマンスとSQLについて新しいことを学ぶために、すべてを1つのSQLクエリで実行しようとしています。
別の方法は、2つのwhileループを使用することです。最初のループはtype=2の各従業員を取得し、次にそのループ内で別のSQLクエリを実行して、その従業員のすべてのアクティブなジョブをフェッチします。
それを行うためのより良い方法が必要ですか?