在下面的查询中,我尝试使用左侧外部联接中的第一个表格。但是我收到一个错误。如何访问左外部联接中的外部表格
SELECT
products.id,
products_cstm.oem_c,
products.mfr_part_num,
products.description,
products.cost,
products.assigned_user_id,
customfields_oo.ans
FROM products
LEFT OUTER JOIN (SELECT COUNT(q.id) AS ans
, pq.product_id
FROM products_quotes pq
LEFT JOIN quotes q
ON pq.quote_id = q.id
WHERE q.deleted = 0
AND pq.deleted = 0
AND q.stage <> 4
AND (pq.qty_shipped < pq.product_qty)
AND pq.product_id = products.id
GROUP BY pq.product_id
) AS customfields_oo
ON customfields_oo.product_id = products.id
LEFT JOIN products_cstm
ON products.id = products_cstm.id_c
WHERE products.deleted = 0
ORDER BY ans DESC
当我运行查询它给了我下面的错误:
Error Code : 1054
Unknown column 'products.id' in 'where clause'
这是不允许第一个“产品”表中左外连接查询。
它会评估customfields_oo查询只有一次或外部主要选择查询的每一行? –
@DhavalDarji - 它将评估'customfields_oo'查询一次,然后将该结果集连接到外部查询。因此,内部查询执行一次,合并/连接/散列(取决于优化引擎)结果到外部表(“产品”)。 – Thomas
谢谢。查询执行罚款上述计算,但如果我想从报价表计算那些具有当前产品的最后一个订单日期,我必须传递customfield_oo查询中的当前产品ID其他它正在计算错误的结果(即它是基于所有产品)。 –