Cuando quieres hacer algún cálculo sobre un determinado ítem debes usar obligatoriamente GROUP BY para agrupar sobre la columna que discrimina el elemento a procesar, aún cuando vayas a obtener lo correspondiente a un único tipo.
Esto último siempre que quieras obtener tambien un identificador. Es decir: Si tienes al menos dos columnas invocadas, la que se calcula y otra más no calculada, obligatoriamente debes usar GROUP BY.
Si deseas datos sobre el mismo item:
SELECT
Código MySQL:
Ver originalI.order_item_name,
I.created_by,
I.virtuemart_product_id,
C.virtuemart_category_id
SUM(I.product_quantity
) totalProducto
FROM `#__virtuemart_order_items` I
INNER JOIN `#__virtuemart_product_categories` C
ON I.virtuemart_product_id
= C.virtuemart_product_id
I.created_by =$tuid
AND C.virtuemart_product_id
= 7
Si sólo quieres el total:
Código MySQL:
Ver original SUM(I.product_quantity
) totalProducto
FROM `#__virtuemart_order_items` I
INNER JOIN `#__virtuemart_product_categories` C
ON I.virtuemart_product_id
= C.virtuemart_product_id
I.created_by =$tuid
AND C.virtuemart_product_id
= 7;
La segunda no requiere el GROUP BY porque operas sobre una única columna, por lo que siempre devolverá un único dato. Pero en la anterior devuelve además otros datos relacionados, por lo que si o si debe ir.
Notas:
1) Esta sintaxis del GROUP BY, con un único campo indicado, es
exclusiva de MySQL. En los demás DBMS es obligatorio poner
todos los campos del SELECT no afectados por una función agrupada.
2) Lo que tienes debe estar devolviendote un error sintáctico porque tienes un cierre de sentencia mal colocado:
Código SQL:
Ver originalWHERE I.created_by =$tuid; -- < Este punto y coma luego de la variable es interpretado por MySQL como cierre de sentencia, lo que genera un error de sintaxis
AND C.virtuemart_product_id = 7
3) No te lo dije en el post anterior, pero es inconveniente el uso de ciertos caracteres en los nombres de objetos de base de datos. El numeral (#) se usa para comentarios entre líneas, lo que en MySQL generaría errores si no lo pones entre acentos agudos (`).
Procura no usar caracteres especiales ni palabras reservadas. Te ahorrarás problemas.