PHP MySQL查询语句问题
问题描述:
我一直在试图修复这个PHP MySQL查询整个下午,我迷失了主意!以下查询工作!:PHP MySQL查询语句问题
$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, o.shipping_code, o.total, o.channel, o.currency_code, o.currency_value, o.date_added, o.date_modified, c.image,
cg.name AS cgroup, CONCAT(o.payment_address_1, '<br>', o.payment_city, ', ', o.payment_zone, ' ', o.payment_postcode) AS address, o.telephone AS phone, o.email AS email,
(SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') .
"') AS order_status FROM `" . DB_PREFIX . "order` o LEFT JOIN `" . DB_PREFIX . "customer` c ON(o.customer_id=c.customer_id) LEFT JOIN `" . DB_PREFIX . "customer_group_description`
cg ON(c.customer_group_id=cg.customer_group_id)";
但是,当我尝试添加以下它打破。
(SELECT action FROM " . DB_PREFIX . "donate_history h LEFT JOIN " . DB_prefix . "order od ON (h.customer_id = od.customer_id)),
我不要如果我写的权利。我重写了它,删除了部分内容,试图尽可能简单,但我无法修复它。这是我一直在尝试的:
$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, o.shipping_code, o.total, o.channel, o.currency_code, o.currency_value, o.date_added, o.date_modified, c.image,
cg.name AS cgroup, CONCAT(o.payment_address_1, '<br>', o.payment_city, ', ', o.payment_zone, ' ', o.payment_postcode) AS address, o.telephone AS phone, o.email AS email,
(SELECT action FROM " . DB_PREFIX . "donate_history h LEFT JOIN " . DB_prefix . "order od ON (h.customer_id = od.customer_id)),
(SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') .
"') AS order_status FROM `" . DB_PREFIX . "order` o LEFT JOIN `" . DB_PREFIX . "customer` c ON(o.customer_id=c.customer_id) LEFT JOIN `" . DB_PREFIX . "customer_group_description`
cg ON(c.customer_group_id=cg.customer_group_id)";
答
看起来像你尝试添加的新子查询没有别名。
SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, o.shipping_code, o.total, o.channel, o.currency_code, o.currency_value,
o.date_added, o.date_modified, c.image, cg.name AS cgroup, CONCAT(o.payment_address_1, '<br>', o.payment_city, ', ', o.payment_zone, ' ', o.payment_postcode) AS address,
o.telephone AS phone, o.email AS email,
(SELECT action
FROM " . DB_PREFIX . "donate_history h
LEFT JOIN " . DB_prefix . "order od
ON (h.customer_id = od.customer_id)) AS donate_history,
(SELECT os.name
FROM " . DB_PREFIX . "order_status os
WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') .
"') AS order_status
FROM `" . DB_PREFIX . "order` o
LEFT JOIN `" . DB_PREFIX . "customer` c
ON(o.customer_id=c.customer_id)
LEFT JOIN `" . DB_PREFIX . "customer_group_description` cg
ON(c.customer_group_id=cg.customer_group_id)
什么是错误? – Ali
您没有该列的任何别名。在关闭的圆括号内写上“as action”之类的东西,看其他人看看我的意思。 – Bryan
两个意见:调用一个表“订单”是在寻求麻烦;如果有payment_address_2怎么办? – Strawberry