Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   agrupar por campos y ordenar (https://www.clubdelphi.com/foros/showthread.php?t=77230)

diegohugogalleg 05-01-2012 11:39:33

agrupar por campos y ordenar
 
hola amigos soy nuevo en el foro, haber si aqui me podeis hechar una mano, con una consulta q no doi hecho ni a tiros.
Teniendo estos registros en la BD

|id | usuario | comentarista| fecha|
| 0 | fran | laura | 2010 |
| 1 | fran | angel | 1999 |
| 2 | fran | angel | 2011 |
| 3 | fran | helen | 2000 |
| 4 | fran | laura | 2012 |
| 5 | pepe | laura | 2011 |



Quiero hacer una consulta que me arrogue todas filas q tenga el usuario 'fran' y ademas que me agrupe el resultado por comentarista
y ademas que muestre de primero el grupo de comentaristas con la primera fecha mas reciente
El resultado q quiero es similar a este;


| 0 | fran | laura | 2012 |
| 4 | fran | laura | 2010 |
--------------------------------------
| 2 | fran | angel | 2011 |
| 1 | fran | angel | 1999 |
--------------------------------------
| 3 | fran | helen | 2000 |



muchas gracias de antemano, aun q ya se que es complicado, por lo menos para mi que no lo doy hecho

masetru 05-01-2012 12:50:09

Veamos si nos sale de cabeza

SELECT Id, Usuario, Comentarista, Fecha
FROM Nombre_Tabla
GROUP BY Id, Usuario, Comentarista, Fecha
HAVING Usuario = 'fran'
ORDER BY Fecha

Prueba con esto.

Casimiro Notevi 05-01-2012 13:07:45

Recuerda encerrar el código entre etiquetas, ejemplo:




En tu caso:

Código SQL [-]
SELECT Id, Usuario, Comentarista, Fecha
FROM Nombre_Tabla
GROUP BY Id, Usuario, Comentarista, Fecha
HAVING Usuario = 'fran'
ORDER BY Fecha

diegohugogalleg 05-01-2012 13:24:15

no va del todo bien, la verda que yo tambien habia llegado asta hay pero me estanque y no avanzo

dicha consulta devuelve esto, y no valdria por q tendria que agrupar por comentaristas, mostrando de primero el grupo de comentaristas con la fecha mayor


| 0 | fran | angel | 1999 |
| 4 | fran | helen | 2000 |
--------------------------------------
| 2 | fran | laura| 2010 |
| 1 | fran | angel | 2011 |
--------------------------------------
| 3 | fran | laura| 2012 |


gracias de todas forms masetru

Casimiro Notevi 05-01-2012 15:42:12

Cita:

Empezado por diegohugogalleg (Mensaje 422393)

| 0 | fran | laura | 2012 |
| 4 | fran | laura | 2010 |
--------------------------------------
| 2 | fran | angel | 2011 |
| 1 | fran | angel | 1999 |
--------------------------------------
| 3 | fran | helen | 2000 |



Pero para obtener eso no es necesario agrupar, aparentemente lo que haces es filtrar por 'fran' y ordenar por comentarista, pero no hay ninguna agrupación, o eso me parece.



diegohugogalleg 05-01-2012 16:00:40

es que no se como hacer si agrupar o no , por que si ago esta consulta

SELECT id, fecha, comentarista
FROM comentarios
WHERE usuario = 'fran'
ORDER BY comentarista, fecha


me mostraria todos los comentaristas seguidos (bien q es lo que quiero), pero no me mostraria en primera posicion la fecha mas actual
Cita:

lo que quiero

| 0 | fran | laura | 2012 | -> la fecha mas grande de primera
| 4 | fran | laura | 2010 |
---------------------------
| 2 | fran | angel | 2011 | |> que los nombres de los comentaristas salgan todos seguidos,
| 1 | fran | angel | 1999 | |> todos los angel juntos (uno a continuacion del otro)
---------------------------
| 3 | fran | helen | 2000 |
|> todas las helen juntas (una a continuacion de la otra)


lo q no quiero
| 0 | fran | laura | 2012 |
| 1 | fran | angel | 1999 |
---------------------------
| 2 | fran | angel | 2011 |
| 4 | fran | laura | 2010 |
| 1 | fran | angel | 1999 |
---------------------------
| 3 | fran | helen | 2000 |



lo que no quiero
| 3 | fran | helen | 2000 |
---------------------------
| 4 | fran | laura | 2010 |
| 0 | fran | laura | 2012 |
---------------------------
| 2 | fran | angel | 2011 |
| 1 | fran | angel | 1999 |


oscarac 05-01-2012 16:16:27

has probado asi?

Código SQL [-]
SELECT id, fecha, comentarista
FROM comentarios
WHERE usuario = 'fran'
ORDER BY comentarista asc, fecha desc

aunque angel saldria primero que laura por el tema del ordenamiento alfabetico

diegohugogalleg 05-01-2012 16:23:50

si la verda es q asi tambien e probado pero claro ese es el problema como tu bien dices q al ordenar por comentarista no me mostraria la fecha mayor de primera

mira que le he dado vueltas pero no hay manera, gracias de todas formas


La franja horaria es GMT +2. Ahora son las 11:17:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi