PHP MySQL查询语句问题

时间:2017-07-18 21:21:46

标签: 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)";

1 个答案:

答案 0 :(得分:1)

您尝试添加的新子查询看起来没有别名。

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)