【发布时间】:2022-01-03 13:23:33
【问题描述】:
使用下面的 SQL,我正在尝试从右表“order_flags”中记录所有匹配的行。
SELECT id,
po_number,
alert
FROM orders
INNER JOIN order_flags on order_flags.order_fk
WHERE order_flags.alert = " date("Y-m-d") . "
AND order_flags.order_fk = orders.id
AND orders.flag_overdue_po='1';
表格如下。第一个是orders 表,第二个是order_flags 表。
【问题讨论】:
-
连接的
on子句应该包含某种比较,例如on users.department_id = departments.id或类似的。你的只包含一个片面的表达式,所以它可能总是评估为真。修改您对 JOIN 的理解并查看一些示例。 -
" date("Y-m-d") . " - 我什至猜不出这是什么意思 -
-
也许 `order_flags.order_fk = orders.id` 应该是加入条件?
-
@P.Salmon 是真的。将一些 PHP 放入字符串中可能是一次拙劣的尝试。我刚刚删除了 PHP 标记,虽然现在您已经指出了这一点,但可能是有原因的。他们没有理由不能只使用 SQL 生成日期。
-
SELECT id, po_number, alert FROM orders INNER JOIN order_flags on order_flags.order_fk = orders.id WHERE order_flags.alert = 'your date' AND orders.flag_overdue_po='1';