2012-06-27 2 views
0

У меня возникла проблема с запросом sql, который не будет работать, если я попытаюсь использовать псевдоним (scount, samount). Запрос выполняется нормально без псевдонима, и он также отлично работает с использованием только первого (scount), но как только я добавляю второй (samount) запрос не выполняется. Я предполагаю, что это связано с тем, что я почему-то делаю минус-запрос.возврат псевдонима с использованием минуса в sql-запросе завершается

Может ли кто-нибудь помочь мне разрешить это, чтобы я мог возвращать значения с помощью псевдонимов.

select count(t.invoiceID) scount, sum(amount) samount - 
IFNULL(
(
select sum(p.amount) as pamount 
    from invoice t, invoiceFactoring ift, InvoiceType it, Payment p      
    where t.issuerID = 38 
    AND ift.invoiceID = t.invoiceID 
    AND t.invoiceID = p.invoiceID 
    AND it.invoiceTypeID = t.invoiceTypeID 
    AND now() > date_add(t.invoiceExpiryDate, INTERVAL 45 DAY) 
) 
,0) 
    from invoice t, invoiceFactoring ift, InvoiceType it 
    where issuerID = 38 
    AND ift.invoiceID = t.invoiceID 
    AND it.invoiceTypeID = t.invoiceTypeID 
    AND now() > date_add(t.invoiceExpiryDate, INTERVAL 45 DAY) 
    AND t.disabled = 0 
    AND it.typeCategory = 1 

ответ

1

псевдоним идет после расчета.

SELECT 1 blah - 2 <--- wrong 
SELECT 1 - 2 blah <--- correct 

P.S. осветление

ваш запрос по существу это:

SELECT ... scount, ... samount - IFNULL(...) 
FROM ... 

просто заменить его

SELECT ...scount, ... - IFNULL(...) samount 
FROM ... 

и принять ответ, если это поможет вам, потому что вы вряд ли получите еще, пока вы не начнете принимать.

+0

Хмм хорошо, не уверен, что я понимаю, как это сделать в моем запросе. Возможно, вы (или кто-то еще) можете быть более конкретным в том, как я могу вернуть запрос: scount, samount. (пожалуйста :-)) –

+0

обновил мой ответ – keymone