Общее количество столбцов в MySQL! - PullRequest
1 голос
/ 29 июня 2009

У меня есть этот sql:

SELECT * , (
xnum * xprice
) AS amount, SUM( xnum * xprice ) AS total
FROM xxbasket
LEFT JOIN xxsubproduct
USING ( xsubproduct_id )
LEFT JOIN xxcolor
USING ( xcolor_id )
WHERE xuserid = '3'

когда я использую SUM (xnum * xprice) КАК всего, это дает мне только одну строку, но когда я удаляю это SUM (xnum * xprice), это дает мне все строки

Мой вопрос: как я могу получить сумму? пока мне нужны все строки из запроса ?!

Ответы [ 2 ]

2 голосов
/ 29 июня 2009

Sum - это функция, в которой вычисляется сумма вашего значения (xnum * xprice) по всем выбранным строкам. Результат - одна строка.

Если вы хотите вычислить сумму нескольких групп строк, вы можете использовать предложение GROUP BY, которое группирует столбцы по группам (например, идентификатор пользователя GROUP BY вместо предложения where будет вычислять SUM (xnum * xprice) для всех пользователей. )

0 голосов
/ 29 июня 2009

Функция SUM () является агрегатным оператором. Выбор, с которым он связан, больше не может возвращать отдельные строки, только информацию о группах строк.

Но вы можете вернуть сумму в подзапросе. Вот пример, предполагая, что столбец xprice находится в таблице xxsubproduct:

SELECT *, 
    xnum * xprice AS amount, 
    (   select sum(xnum * xprice)
        FROM xxbasket
        LEFT JOIN xxsubproduct USING xsubproduct_id
        WHERE xuserid = '3'
    ) as total
FROM xxbasket
LEFT JOIN xxsubproduct USING xsubproduct_id
LEFT JOIN xxcolor USING xcolor_id
WHERE xuserid = '3'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...