Programación General > Delphi
Sumar Datos En Sql
(1/1)
figalamx:
Tengo problemas con esta consulta:
[CODE]
with ADOGrupo1 do
begin
Close;
SQL.Clear ;
SQL.Add('SELECT COUNT(*) AS Sacos, ' +
'SUM(Peso) AS Total ' +
'FROM Captura ' +
'WHERE ((Bascula = :Bas1) AND (Bascula = :Bas2) AND (Bascula = :Bas3))');
Parameters.ParamByName('Bas1').Value := 4;
Parameters.ParamByName('Bas2').Value := 5;
Parameters.ParamByName('Bas3').Value := 6;
Open;
end;
El proposito de la misma es contar todos los registros y sumar los pesos de cada Bascula (balanza en otros paises). Asi como esta no funciona; sin embargo si solo dejo WHERE Bascula = 4 funciona bien. ¿Alguien podria decirme en que estoy mal?
Gracias!
Enko:
--- Citar --- 'WHERE ((Bascula = :Bas1) AND (Bascula = :Bas2) AND (Bascula = :Bas3))');
--- Fin de la cita ---
lo que pasa es que estas usando AND y deberias usar OR si quieresque sume siempre que sea bas1, bas2, bas3....
--- Código: Text --- 'WHERE ((Bascula = :Bas1) OR (Bascula = :Bas2) OR (Bascula = :Bas3))');
figalamx:
Gracias Enko! Funciona!...pero no entiendo porque OR y no AND, si me puedes dar una luz para entender te lo agradezco.
Enko:
--- Cita de: "figalamx" --- Gracias Enko! Funciona!...pero no entiendo porque OR y no AND, si me puedes dar una luz para entender te lo agradezco.
--- Fin de la cita ---
leiste la variable "Bascula" y puede tener los siguientes valores: "Basc1", "Basc2", "Basc3".
Esta variable Basbula puede tener SOLO UN VALOR AL MISMO TIEMPO. Es decir, si vale Basc1, no puede ser ni Basc2 ni Basc3.
Si colocas
if (Bascula=Basc1) and (Bascula=Basc2) and (Bascula=Basc3) then....
SIEMPRE SERA FALSO, porque solo puede tener un valor.
Lo que a vos te interesa es Si Vale 1, 2 o 3. Pero no 1,2 y 3.
Es decir, se suma si Vale Basc1 o Basc2 o Basc3.
Por eso el OR
figalamx:
Ok, comprendido! gracias una vez mas!
Navegación
Ir a la versión completa