2012-06-25 5 views
0

У меня есть запрос:глобальной переменной MySQL

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 раз. Интересно, есть ли способ объявить глобальную переменную, чтобы присвоить то же значение всем

+1

Вы можете, конечно же, что в хранимой процедуре – mihaisimi

+0

ли вы можете позволить мне пример о хранимой процедуре? ссылаясь на мой вопрос? –

ответ

3

Конечно, вы можете использовать user defined variables.

Например:

SET @invoice_code=1; 

SELECT MIN(qa_returns.returnlog_code) 
FROM qa_returns 
WHERE qa_returns.invoice_code = @invoice_code 
Смежные вопросы