PDA

Ver la versión completa : Consulta (fácil) sobre SQL Server



burzuM
09-07-2014, 04:30 PM
Creo qeu es bastante choto pero no me doy cuenta.

http://puu.sh/a41od/941217db2c.png

Tengo esa tabla y me quiero quedar con el personal_asignado que aparezca menos veces en la tabla.

Hice:

SELECT COUNT(*) FROM Historia_Problemas
GROUP BY personal_asignado;

Pero no se como hacer onda un MIN de lo que me devuelve eso :facepalm:

Master of the Wind
09-07-2014, 04:56 PM
Pero que queres mostrar del personal_asignado minimo?

Esa consulta que hiciste ahi te devuelve 2 y 1 (2 veces el valor 2, y tenes una vez el valor 3).

Vos tendrias que hacer:

Select id, min(personal) from(
select historia_problemas_id id, count(*) personal from historia_problemas group by personal_asignado
) as foo

Ahi te quedas con el id del historial_problema asignado y la cantidad de personal

burzuM
09-07-2014, 05:02 PM
@Master of the Wind (http://www.gameover.uy/member.php?26-Master-of-the-Wind)

Ahhh

Yo me quiero quedar justamente con el valor personal asignado, pero solo de uno, el que aparece menos veces.

O sea que sería algo así?

SELECT MIN(personal) FROM (

SELECT COUNT(*) personal FROM Historia_Problemas
GROUP BY personal_asignado

)

Master of the Wind
09-07-2014, 05:22 PM
Sep, ahora entendi lo que queres, y si, es asi.


Ojo que cuando haces una subconsulta desde un from, tenes que darle un alias a esa consulta (como puse "as foo" al final en el ejemplo que te di)

burzuM
09-07-2014, 05:27 PM
Sep, ahora entendi lo que queres, y si, es asi.


Ojo que cuando haces una subconsulta desde un from, tenes que darle un alias a esa consulta (como puse "as foo" al final en el ejemplo que te di)

Muchas gracias!

burzuM
09-07-2014, 11:44 PM
@Master of the Wind

Otra pregunta medio chota (creo) :P

Tengo esta tabla: Historia_Problemas

http://puu.sh/a4yqR/aa3a0786f5.png

Y esta tabla: Soluciones

http://puu.sh/a4yDv/af4216585e.png

Estoy haciendo un trigger que al momento de insertar una nueva solucion en la tabla Soluciones,
se fija primero si ese problema tiene una fechahora_solucionado en la tabla Historia_Problemas.
En caso de estar nula, tiene que poner la fecha de hoy, y luego de eso hacer el insert normal en la tabla Soluciones.

El trigger funca, pero me da problema cuando ingreso más de una fila por sentencia, tipo asi:

INSERT INTO Soluciones (Historia_Problemas_id, solucion_descrip) values
(4, 'tal descripcion'),(5, 'tal otra');

Este es el trigger:

CREATE TRIGGER trigger_sol
ON Soluciones
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;


UPDATE Historia_Problemas
SET fechahora_solucionado = GetDate()
FROM Historia_Problemas HP, Inserted I
WHERE HP.Historia_Problemas_id = I.Historia_Problemas_id
AND HP.fechahora_solucionado IS NULL


INSERT INTO Soluciones (Historia_Problemas_id, solucion_descrip)
SELECT Historia_Problemas_id, solucion_descrip
FROM Inserted;


END;


El error es: Subquery returned more than 1 value.

Tenés idea cómo se soluciona?

Master of the Wind
10-07-2014, 12:09 AM
Mandando de a una? :v


No domino tanto sql server a nivel de triggers, pero, realmente, te complicaria demasiado mandar de a una sentencia? ojo, se me ocurre como solucion rapida.

burzuM
10-07-2014, 12:12 AM
Mandando de a una? :v


No domino tanto sql server a nivel de triggers, pero, realmente, te complicaria demasiado mandar de a una sentencia? ojo, se me ocurre como solucion rapida.

Mandando de a una funciona, pero debería poder hacerlo para cuando se ingresan varias a la vez.. Tengo la entrega mañana a las 20hs y me quedan este tipo de dudas :P

Nick L. Scott
10-07-2014, 12:37 AM
Si no encontrás una solución en Google (o sea, si no es medio fácil de encontrar) preguntalo en StackOverflow. Te menciono lo de Google porque si llega a ser medio fácil de encontrar no les va a hacer mucha gracia darte la solución.

Master of the Wind
10-07-2014, 12:37 AM
El tema es que ya si queres mas logica en el trigger, tenes que pensar en un stored procedure.

burzuM
10-07-2014, 12:58 AM
sale pegarme un tiro jajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjaj ajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajaj aajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajaj ajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjaja jajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajaja ajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajaja jajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajaj ajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaa jjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajaj ajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajajajajajaajjajajajajjajaja jajajaajjaja


mañana comento si solucioné, me voy a re mil dormir lchadurahf

NeeKo
17-07-2014, 10:30 PM
Vengo tardisimo y no se si lo solucionaste o no burzuM , pero el problema es que los triggers en sql server se disparan por statement y no por cada registro que insertes.

O haces los insert por separado o usas un cursor por ejemplo e iteras el codigo del trigger por cada registro del cursor

Dinouy
17-07-2014, 10:57 PM
Tengo entendido que el trigger se puede usar solamente si una row es actualizada, si mas de una row es actualizada, sale al break. En tu caso (si entendi bien), pones mas de 1 valor, y deberia actualizar mas de una row. Yo te diria que te fijes como hacer un statement de trigger para que pueda actualizar mas de 1 row.

Mas o menos lo que dijo el Sr. Neeko.

PD: Me dio nostalgia ver al vientito dando Catedra de SQL (aunque comio del tapper con informix en la utu cof cof)

carp
21-07-2014, 01:56 AM
SELECT (lo que quieras mostrar por ejemplo la clave)
FROM Historia_Problemas
GROUP BY personal_asignado
having count (*)<=ALL (SELECT count(*)
.................................FROM Historia_Problemas
.................................GROUP BY personal_asignado);

Master of the Wind
21-07-2014, 10:43 AM
PD: Me dio nostalgia ver al vientito dando Catedra de SQL (aunque comio del tapper con informix en la utu cof cof)


Na esa version da cancer, los quilombos con los que me he visto en los años no tiene nombre.