0

私はこのクエリを持っています:

SELECT 
    qa_invoices.invoice_clientname, 
    (
        SELECT IFNULL(MIN(qa_returns.discount_code),1) 
        FROM qa_returns 
        WHERE qa_returns.invoice_code = qa_invoices.invoice_code 
        AND qa_returns.discount_code <> 1
    ) AS discount_code,
    qa_users.user_name,
    (0.00) AS previous_balance,
    (0.00) AS difference_to_be_paid,
    (0.00) AS client_credit,
    SUM(SubQueryAlias.item_discount) AS invoice_discount,
    SUM(SubQueryAlias.item_subtotal) AS invoice_subtotal,
    SUM(SubQueryAlias.item_total) AS invoice_total,
    DATE_FORMAT(qa_invoices.invoice_date,'%M %e, %Y @ %h:%i %p') AS returnlog_date 
FROM (
        SELECT  qa_returns_items.item_code, 
                qa_returns_items.item_subtotal, 
                qa_returns_items.item_discount, 
                qa_returns_items.item_total 
        FROM qa_returns_items 
        WHERE returnlog_code = (
                                    SELECT MIN(qa_returns.returnlog_code) 
                                    FROM qa_returns 
                                    WHERE qa_returns.invoice_code = 1
                                )
    UNION
        SELECT  qa_returns_residues.item_code, 
                qa_returns_residues.item_subtotal, 
                qa_returns_residues.item_discount, 
                qa_returns_residues.item_total 
        FROM qa_returns_residues 
        WHERE returnlog_code = (
                                    SELECT MIN(qa_returns.returnlog_code) 
                                    FROM qa_returns 
                                    WHERE qa_returns.invoice_code = 1
                                )
        ORDER BY item_code ASC
) AS SubQueryAlias, qa_invoices
LEFT JOIN qa_users USING(user_code)
WHERE SubQueryAlias.item_code NOT IN (
                        SELECT a.item_code 
                        FROM qa_returns_items a 
                        JOIN qa_returns_residues b 
                            ON b.item_code = a.item_code 
                        WHERE a.returnlog_code = (
                                                    SELECT MIN(qa_returns.returnlog_code) 
                                                    FROM qa_returns 
                                                    WHERE qa_returns.invoice_code = 1
                                                 )
                            AND b.returnlog_code = (
                                                    SELECT MIN(qa_returns.returnlog_code) 
                                                    FROM qa_returns 
                                                    WHERE qa_returns.invoice_code = 1
                                                   )
                        )
AND qa_invoices.invoice_code = 1;

クエリは問題なく動作しますが、値invoice_codeが 5 回設定されていることがわかります。グローバル変数を宣言して、すべてに同じ値を割り当てる方法はあるのだろうか

4

1 に答える 1

3

確かに、ユーザー定義変数を使用できます。

例えば:

SET @invoice_code=1;

SELECT MIN(qa_returns.returnlog_code) 
FROM qa_returns 
WHERE qa_returns.invoice_code = @invoice_code
于 2012-06-25T19:44:21.363 に答える