2014-06-19 31 views
0

我運行下面的查詢,目前正由CodeIgniter的DataMapper的ORM生成的,因爲我嘗試查詢形式order_product/order/order_status的很深的關係:MySQL的左外連接列不存在 - 笨DataMapper的ORM

SELECT `order_products`.* 
FROM (`order_products`) 
LEFT OUTER JOIN `orders` orders ON `orders`.`id` = `order_products`.`order_id` 
LEFT OUTER JOIN `order_statuses` order_order_statuses ON `order_order_statuses`.`id` = `orders`.`order_status_id` 
WHERE `order_products`.`sku` IN ('SYB-SAMPLETEST8', 'Copy of SYB-SAMPLE#B') 
AND `order_products`.`deleted` = 0 
AND `orders`.`ext_created_on` >= '2014-05-05' 
AND `order_products`.`deleted` = 0 
AND `orders`.`ext_created_on` <= '2014-05-21' 
AND `orders`.`deleted` = 0 
AND `order_statuses`.`deleted` = 0 
AND `order_order_statuses`.`sales_data` = 1 

我收到以下錯誤:

ERROR 1054 (42S22): Unknown column 'order_statuses.deleted' in 'where clause' 

我爲order_statuses表模式如下:

+-------------+--------------+------+-----+-------------------+----------------+ 
| Field  | Type   | Null | Key | Default   | Extra   | 
+-------------+--------------+------+-----+-------------------+----------------+ 
| id   | int(11)  | NO | PRI | NULL    | auto_increment | 
| ext_id  | int(11)  | YES |  | NULL    |    | 
| ext_type_id | int(11)  | YES |  | NULL    |    | 
| name  | varchar(255) | YES |  | NULL    |    | 
| sales_data | tinyint(1) | YES |  | 0     |    | 
| deleted  | tinyint(1) | NO |  | 0     |    | 
| created_on | timestamp | NO |  | CURRENT_TIMESTAMP |    | 
+-------------+--------------+------+-----+-------------------+----------------+ 

即使刪除的列存在,爲什麼會收到此錯誤?

回答

1

因爲您將其別名爲order_order_statuses。