Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[SQL 2005] Liste des 1 prochain évenement par ville ... avec WITH ?

2 réponses
Avatar
pacomoreau
Bonjour,
j'ai une base de donn=E9es (SQL Server 2005) avec une table
d'=E9venements (id, city, dateEvent) et je voudrais ressortir une liste
contenant le prochain =E9venement de chaque ville (1 seul par ville au
maximum).

J'ai essay=E9 plusieurs types de requ=EAtes sans obtenir exactement ce
que je veux :'(
Je pense pouvoir faire ce que je veux en utilisant un curseur ou une
table temporaire ... mais le probl=E8me me semble tellement "simple"
qu'il doit exister une meilleure solution ?

Pour pr=E9ciser ce que je voudrais obtenir voici un exemple de donn=E9es
:

id city dateEvent
1 PARIS 2006-01-01
2 PARIS 2007-01-01
3 PARIS 2008-01-01
4 RENNES 2006-01-01
5 LYON 2007-01-01
6 LYON 2008-01-01

Et je voudrais avoir comme r=E9sultats :

id city dateEvent
2 PARIS 2007-01-01
5 LYON 2007-01-01

(aucun r=E9sultat pour RENNES car l'=E9venement est pass=E9)

Je n'ai pas encore utilis=E9 les nouveaut=E9s de SQL Server 2005 et je
voulais savoir s'il =E9tait possible d'obtenir ce r=E9sultat avec
l'utilisation de "WITH" ?
J'ai essay=E9 2/3 choses en partant de cette requ=EAte :

SELECT city, MIN(dateEvent)
FROM Events
WHERE dateEvent >=3D getdate()
GROUP BY city

Mais sans parvenir =E0 r=E9cup=E9rer les bons ID :'(
Si vous avez une id=E9e pour mon probl=E8me je suis preneur :-)

Merci d'avance :)

Paco

2 réponses

Avatar
SQLpro
de tête sans avoir testé :

SELECT *
FROM Events E
WHERE EXISTS(SELECT 1
FROM Events
WHERE dateEvent >= CURRENT_TIMESTAMP
AND city = E.city
GROUP BY city
HAVING MIN(dateEvent) = E.dateEvent )

A +

Frédéric BROUARD - SQLpro - MVP SQL Server
Expert SQL, SGBDR, modélisation de données
SQL et SGBDR http://sqlpro.developpez.com/
Formations, conseils, audit, modélisation,
optimisation, tuning : www.datasapiens.com

a écrit :

Bonjour,
j'ai une base de données (SQL Server 2005) avec une table
d'évenements (id, city, dateEvent) et je voudrais ressortir une liste
contenant le prochain évenement de chaque ville (1 seul par ville au
maximum).

J'ai essayé plusieurs types de requêtes sans obtenir exactement ce
que je veux :'(
Je pense pouvoir faire ce que je veux en utilisant un curseur ou une
table temporaire ... mais le problème me semble tellement "simple"
qu'il doit exister une meilleure solution ?

Pour préciser ce que je voudrais obtenir voici un exemple de données
:

id city dateEvent
1 PARIS 2006-01-01
2 PARIS 2007-01-01
3 PARIS 2008-01-01
4 RENNES 2006-01-01
5 LYON 2007-01-01
6 LYON 2008-01-01

Et je voudrais avoir comme résultats :

id city dateEvent
2 PARIS 2007-01-01
5 LYON 2007-01-01

(aucun résultat pour RENNES car l'évenement est passé)

Je n'ai pas encore utilisé les nouveautés de SQL Server 2005 et je
voulais savoir s'il était possible d'obtenir ce résultat avec
l'utilisation de "WITH" ?
J'ai essayé 2/3 choses en partant de cette requête :

SELECT city, MIN(dateEvent)
FROM Events
WHERE dateEvent >= getdate()
GROUP BY city

Mais sans parvenir à récupérer les bons ID :'(
Si vous avez une idée pour mon problème je suis preneur :-)

Merci d'avance :)

Paco


Avatar
pacomoreau
Merci beaucoup, ça marche parfaitement ;o)

Paco