您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'WHERE j附近使用正确的语法.id_customer第4行= 1'
SELECT j.`id_customer`, j.`id_order`, m.`id_shop`
FROM `ps_orders` j
LEFT JOIN `ps_order_detail` m
WHERE j.`id_customer` = 1
Run Code Online (Sandbox Code Playgroud)
这是从prestashop php中的原始代码生成的,如果打开详细的错误纠正-------
foreach ($result as $key)
{
$customer_id_is = 1;
$product_id_is = 5;
$result2 = Db::getInstance()->executeS(
'SELECT j.`id_customer`, j.`id_order`, m.`id_shop`
FROM `'._DB_PREFIX_.'orders` j
LEFT JOIN `'._DB_PREFIX_.'order_detail` m
WHERE j.`id_customer` = '.$customer_id_is.'
');
}
Run Code Online (Sandbox Code Playgroud)
您缺少JOIN中的ON子句
SELECT j.id_customer, j.id_order, m.id_shop FROM ps_orders j
LEFT JOIN ps_order_detail m
ON m.SomeField = j.SomeField <-- HERE
WHERE j.id_customer = 1
Run Code Online (Sandbox Code Playgroud)
如果您要加入表格,则需要在字段上链接它们.否则,您正在执行交叉连接.
MySQL Docs状态:
在MySQL中,JOIN,CROSS JOIN和INNER JOIN是语法等价物(它们可以互相替换).在标准SQL中,它们不等效.INNER JOIN与ON子句一起使用,否则使用CROSS JOIN.
这样可行:
SELECT j.id_customer, j.id_order, m.id_shop FROM ps_orders j
JOIN ps_order_detail m
WHERE j.id_customer = 1
Run Code Online (Sandbox Code Playgroud)
就像这样:
SELECT j.id_customer, j.id_order, m.id_shop FROM ps_orders j
INNER JOIN ps_order_detail m
WHERE j.id_customer = 1
Run Code Online (Sandbox Code Playgroud)
但它对OUTER JOIN不起作用.