在下面的查詢中,我嘗試使用左側外部聯接中的第一個表格。但是我收到一個錯誤。如何訪問左外部聯接中的外部表格
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其他它正在計算錯誤的結果(即它是基於所有產品)。 –