Ayuda con una consulta SQL

21/07/2004 - 09:31 por Jaime Pérez | Informe spam
Hola:

A ver si me podeis ayudar con esta consulta SQL
Tengo una tabla con titulares de noticias, con una fecha y que pertenecen a
un seccion. Por otro lado tengo una tabla con los nombres de las secciones
que existen y el orden en que se deben presentar:

Tabla Secciones
seccion varchar
orden int

Tabla noticias
id int
titular varchar
fecha datetime
seccion varchar

Quiero obtener en una consulta, por cada sección ordenada por el campo orden
la última noticia de hoy (sólo una, obtenida a partir del campo fecha o
ultimo id si hay varias de hoy).

¿alguna idea de consulta?

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
21/07/2004 - 09:58 | Informe spam
Como siempre, hay varias opciones, pero una posible solución puede ser
la siguiente:

SELECT s.seccion, s.orden, n.titular, n.fecha
FROM secciones s INNER JOIN noticia n ON s.seccion=n.seccion INNER
(SELECT MAX(fecha) maxFecha,seccion FROM noticia GROUP BY
seccion) mF ON mF.maxFecha=n.fecha AND mf.seccion=n.seccion
ORDER BY s.orden

En esta consulta se sobreentiende que la hora también la estás enviando
al grabar los datos. Eso sí, si no tienes un índice sobre el campo fecha de
la noticia, yo se lo pondría para mejorar el rendimiento...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jaime Pérez" escribió en el mensaje
news:#
Mostrar la cita
a
Mostrar la cita
orden
Mostrar la cita
#2 Jaime Pérez
21/07/2004 - 10:29 | Informe spam
Muchas gracias... ¡FUNCIONA PERFECTO!

A ver si consigo entenderlo correctamente la consulta...

Un saludo,

Jaime Pérez


"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:
Mostrar la cita
enviando
Mostrar la cita
de
Mostrar la cita
pertenecen
Mostrar la cita
secciones
Mostrar la cita
#3 Carlos Sacristan
21/07/2004 - 11:05 | Informe spam
Un truco: tú simplemente piensa cómo harías para seleccionar esos datos
(no hablamos de SQL, sino las condiciones que cumplen los datos que
necesitas) y luego es cuestión de ir solucionando los problemas poco a poco,
no todo de golpe.

Si no entiendes lo que hago en la consulta, dilo y te lo explicamos...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jaime Pérez" escribió en el mensaje
news:
Mostrar la cita
ser
Mostrar la cita
INNER
Mostrar la cita
BY
Mostrar la cita
o
Mostrar la cita
#4 Jaime Pérez
22/07/2004 - 09:43 | Informe spam
Gracias, Carlos.

Me costaba entender esta parte:
(SELECT MAX(fecha) maxFecha,seccion FROM noticia GROUP BY seccion) mF
que veo que asignas el resultado de una select a "una especie de tabla
virtual" para luego utilizar sus resultados para compararlos en
ON mF.maxFecha=n.fecha AND mf.seccion=n.seccion ORDER BY s.orden

No sabía que se podía hacer eso...

Trabajo con ASP y normalmente hago consultas acumuladas, es decir, que en
este caso habría sacado la lista de secciones en una consulta y luego, con
el ASP, por cada seccion, habría obtenido el titular más moderno. Esto
suponía que era menos eficiente que la consulta que me has fabricado, por
eso el preguntaros...

¿Me recomiendas algún manual o, preferiblemente, web, que me ayude más a
entender estas cosas? Los BOL no me ayudan mucho a entender el T-SQL porque
son simples listas de funciones... En estos foros se aprende mucho pero
nunca está de más algo de información extra...

Muchas gracias por vuestra ayuda...

Un saludo,

Jaime Pérez

"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:
Mostrar la cita
datos
Mostrar la cita
poco,
Mostrar la cita
fecha
Mostrar la cita
campo
Mostrar la cita
fecha
Mostrar la cita
#5 Carlos Sacristan
22/07/2004 - 09:58 | Informe spam
No es que sea una "tabla virtual" esa sentencia, sino un conjunto de
resultados, al igual que una tabla o una vista. Por eso la sintaxis es
perfectamente válida.

Yo creo que el manual de Fernando Guerrero: "SQL Server 2000: con
ejemplos" es un muy buen libro para usuarios medios, muy didáctico y fácil
de aprender. Eso sí, aunque es ya de nivel avanzado, es imprescindible el de
Kalen Delaney "A fondo SQL Server 2000": aunque algunos capítulos son muy
densos, hay otros, como por ejemplo el de optimización de consultas, que
aclaran muchísimos conceptos.

Y por supuesto no dejes de leer los foros. Te aseguro que lo que se
aprende aquí no tiene precio...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jaime Pérez" escribió en el mensaje
news:
Mostrar la cita
porque
Mostrar la cita
explicamos...
Mostrar la cita
puede
Mostrar la cita
GROUP
Mostrar la cita
Ads by Google
Search Busqueda sugerida