1

私はこれについてかなり調べましたが、別の方法をとる前にすべての可能性を使い果たしたいと思います.

次のクエリ:

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 句に保持する必要があります。

4

0 に答える 0