Problemas SQL

Que tal disculpa que te de tanta lata, pero ando hecha pelotas con esto del SQL, estoy tratando de hacer una consulta de 4 tablas, estoy tratando de hacer una especia de tabla de movimientos de cada código, donde tengo que mostrar la fecha de ingreso que esta en una tabla Ingreso, después que código es y en que camión llego esot también lo tomo de Ingresos, pero también necesito sacar a que ordenes se destino ese código y eso lo tengo en una tabla llamada LCortes pero para saber a que orden se destino en una tabla llamada OrdenD tengo el código y camión que utiliza una orden y en LCortes tengo cuanto se destino de cada código.
Así es como lo trate de hacer:
consultadato="Select od_codigo as codig, od_embarque as embarque, od_clave as clave, sum(DISTINCT(ld_rollop))as cantidad, ld_orden as orden, lc_telasigna as cortadas, lc_telasig as asignada from OrdenD, orden, LiquidaD, LCortes where OrdenD.od_clave=orden.or_clave AND orden.or_corte=LiquidaD.ld_orden AND LiquidaD.ld_orden=LCortes.lc_orden group by or_fecha"
Pero me marca esto:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]La columna 'OrdenD.od_codigo' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.
¿Seria mucha molestia si me expllicaras que estoy haciendo mal?

1 respuesta

Respuesta
1
Cuando usas una función de grupo de SQL, como un SUM, o COUNT, debes poner todos los campos que no van en la función, en este caso el sum, en el group by, así el query quedaría más o menos así:
od_codigo as codig,
od_embarque as embarque,
od_clave as clave,
sum(DISTINCT(ld_rollop))as cantidad,
ld_orden as orden,
lc_telasigna as cortadas,
lc_telasig as asignada
Disculpa que no haya respondido a tu ayuda pero no tenia PC y apenas pude conectarme mira te agradezco tu respuesta en la que tenia el problema pero ahora tengo otro problema con los select y Group.
Mira tengo una consulta donde necesito tomar todos los datos de dos tablas y solo un de uja tabla y la suma de otra tabla, intente algo así:
ejemplo="SELECT Confeccion.*, Orden.*, od_codigo, SUM(od_metros) as total, t_provee FROM Confeccion INNER JOIN Orden ON Confeccion.cn_orden = Orden.or_corte INNER JOIN OrdenD ON Orden.or_clave=OrdenD.od_clave INNER JOIN Tela ON od_codigo=Tela.t_codigo order by Orden.or_corte"
Pero al querer correrlo me marca el siguiente error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]La columna 'Confección.cn_fecha' de la lista de selección no es válida, porque no está contenida en una función de agregado y no hay cláusula GROUP BY.
¿Seria mucha molestia si me explicaras que tengo mal?
Disculpa tanta moelstia pero ya me atore aquí.
¿Requieres qué finalice la anterior pregunta para que me pueda responder esta?.
Espero me pueda responder en cuanto pueda
Muchas Gracias y de nuevo disculpe
Mil gracias por tu ayuda, me fue de gran utilidad, no me hacia nada porque no lo estaba agrupando.
Muchas gracias por tu ayuda y disculpa la lata.
Atentamente.
Erika
No tienes dada de que disculparte, Lo normal es que cada pregunta siga un curso independiente, sería bueno que finalizaras una por una,
pero bueno esta ya esta hecha. Recuerda que cada que uses una función de grupo como:
count(*), sum(), avg(), etc...
Los campos que no sean utilizados por las funciones y aparezcan en tu select, deben ir en el group by. Así sería:
select campo1, campo2, campo3, sum(campo4)
from tabla
group by campo1, campo2, campo3;
esta sentnecia es correcta, si agregas al select un campo más, este debe ir también en el group by.
Ojalá te haya servido, amigo.
Saludos
Abc
:)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas