私は、SQLクエリを次の結合している:Join mysqlクエリーでWhere句とON句を使用する場合
public function exportAll($date) {
$sql = "SELECT CONCAT(u.firstname, u.lastname) as fullname, c.early_checkout_remarks, c.delayed_checkin_remarks, DATE(c.checkin_time) as checkin_date, DATE(c.checkout_time) as checkout_date, TIME(c.checkin_time) as checkin_time, TIME(c.checkout_time) as checkout_time
FROM users u
LEFT JOIN checkin_checkout c
ON u.id=c.users_id
AND (DATE(c.checkin_time) = '%s' OR DATE(c.checkout_time) = '%s')
AND u.deleted IS NULL
ORDER BY fullname,checkin_date";
$records = $this->db->exec(sprintf($sql,$date,$date));
return $records;
私だけが削除されていないユーザーのレコードをしたいです。しかし、このクエリは、 'deleted'カラムに値を持つユーザも返しています。
これが機能します!知識のために、On節とWhere節の違いは何ですか? – Azima
問題ありません。私が質問したように、ON句はJOINに条件を適用するだけです(つまり、結合されたテーブルからどの行が含まれるかを制御します)。 WHEREは条件を最終出力に適用します。エクササイズでSQLチュートリアルを行い、結果が何であるかを自分で確認することで、より多くのことを学ぶことができます。簡単なデータで例を試してみると、はるかに明確になり、直感的になります。 – ADyson