mysql - todos - ¿Suma los valores de una sola fila?
sumar valores de dos tablas mysql (2)
Tengo una consulta de MySQL que devuelve una sola fila que es una serie de 1s y 0s. Es para un indicador de barra de progreso. Ahora tengo el resumen en código, pero intenté sumar los valores en una consulta y me di cuenta de que no podía usar SUM () porque son muchas columnas pero solo una fila.
¿Hay alguna manera de que pueda sumar esto automáticamente en la consulta? Es como esto:
item_1 | item_2 | item_3 | item_4
-------+--------+--------+--------
1 | 1 | 0 | 0
Edición: olvidé mencionar, item_1
y así sucesivamente no son valores de campo simples, sino que cada uno es más bien una expresión, como SELECT IF( field_1 = 1 and field_2 IS NOT NULL, 0, 1 ) AS item_1 ...
Parece que tengo que hacer una consulta anidada:
SELECT ( item_1 + item_2 ... ) FROM ( SELECT IF( field_1 = y and field_2 IS NOT NULL, 1, 0 ) AS item_1 ... ) AS alias
¿Correcto?
Realmente no puedes hacerlo más simple que:
SELECT item_1 + item_2 + item_3 + item_4
FROM Table1
Si tiene muchas columnas, tomará un tiempo escribirlas. Supongo que también tomó mucho tiempo crear la tabla.
En el futuro, diseñe sus tablas de manera diferente para que cada etapa del proceso sea una fila y no una columna. En otras palabras, en lugar de esto:
id, item_1, item_2, item_3, item_4
Tu mesa podría verse así:
id, item_number, value
Y luego puedes consultarlo así:
SELECT SUM(value)
FROM Table1
WHERE id = @id
De hecho, es probable que ni siquiera necesite la columna de valor. La presencia o ausencia de la fila es suficiente información. Entonces tu consulta se convierte en:
SELECT COUNT(*)
FROM Table1
WHERE id = @id
Tal vez sea un poco tarde para ti esta vez, pero si aún tienes la oportunidad de cambiar el diseño, entonces vale la pena considerarlo.
select item_1 + item_2 + item_3 + item_4 as ItemSum
from MyTable
Si puede haber valores nulos, deberá manejarlos así:
select ifnull(item_1, 0) + ifnull(item_2, 0) + ifnull(item_3, 0) + ifnull(item_4, 0) as ItemSum
from MyTable