私はこれについてかなり調べましたが、別の方法をとる前にすべての可能性を使い果たしたいと思います.
次のクエリ:
SELECT
node.nid AS nid
FROM
node node
WHERE
(node.type in ('new_catalog_master'))
AND (SELECT
status
FROM
(SELECT
@COST := (SELECT
pm.field_price_matrix_ppu_value
FROM
node n
INNER JOIN content_type_new_catalog_master ncm ON ncm.nid = n.nid
INNER JOIN content_type_vendor_price_object vpo ON vpo.field_vpo_product_ref_nid = ncm.nid
INNER JOIN content_type_price_matrix pm ON pm.nid = vpo.nid
WHERE
ncm.nid = node.nid AND vpo.field_vpo_pref_vendor_value = 'yes' AND pm.field_price_matrix_quantity_value = (SELECT
MAX(ctpm.field_price_matrix_quantity_value)
FROM
content_type_price_matrix ctpm
WHERE
ctpm.nid = vpo.nid)),
@DATA_MARGIN := (SELECT
cs.low
FROM
competitor_stats cs
WHERE
cs.nid = node.nid),
@SUGGESTED_MARGIN := (1-(@COST/@DATA_MARGIN))*100,
@MARGIN := (SELECT
ctfmm.field_margin_matrix_gross_margin_value, ctfmm.field_margin_matrix_role_value
FROM
content_type_flexi_margin_matrix ctfmm
WHERE
ctfmm.nid = node.nid AND ctfmm.field_margin_matrix_role_value = 1),
@MARGIN_MAX := 5/100,
(ABS(@SUGGESTED_MARGIN-@MARGIN) > @SUGGESTED_MARGIN*@MARGIN_MAX) AS status
) as result);
戻り値:
Unknown column 'node.nid' in 'where clause'
nid 値をサブクエリにハードコーディングすると、クエリは値を返します。サブクエリで node.nid にアクセスすることは可能ですか?
特定の制約により、サブクエリを WHERE 句に保持する必要があります。