Sous requet avec Max dans un select

Signaler
Messages postés
129
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
4 mars 2010
-
Messages postés
129
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
4 mars 2010
-
Bonjour,

quand je veux prendre dans un DB les lignes qui ont comme IdxArchiv le plus grand, il me sort une erreur comme quoi il manque un opérateur après Max() :
Syntax error: Missing operand after 'MAX' operator.


voici la requête en question :
Dset.Tables("MaTable").Select("FileName='" + FileName + "' AND IdxArchiv=(Select MAX(IdxArchiv) FROM TimeEvent WHERE FileName='" + FileName + "')")


A-t-il moyen que ça fonctionne ainsi ou existe-il une possibilité plus propre ?

Merci d'avance pour votre aide

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Select A And B From ...
Non, Select avec And ne peut pas fonctionner.
Imbriquer deux requètes Select en une seule : Je ne pense pas que cela marche.

Dans ta requète, je ne vois pas comment tu peux rechercher un fichier alors que tu connais déjà son nom ...

Si tu veux sortir le FileName qui a le Idx le plus grand :
Select("FileName, IdxArchiv " & _
       "FROM TimeEvent " & _
       "WHERE IdxArchiv = MAX(IdxArchiv))

Si tu dois concaténer le nom du fichier FileName à ton IdxArchiv, essaye ça :
Select("FileName + Convert(VarChar, IdxArchiv) " & _
       "FROM TimeEvent " & _
       "WHERE IdxArchiv = MAX(IdxArchiv))


Si j'ai répondu à côté de la plaque, repose clairement ta question en nous disant :
- Quels sont les éléments de ta table
- Si tu as plusieurs tables
- Ce que tu veux comme résultat
- etc ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
129
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
4 mars 2010

J'ai déjà tenté de faire simplement un "where IdxArchiv = Max(IdxArchiv)" mais il me retourne l'IdxArchiv le plus haut de toute la table alors que je voudrais l'IdxArchiv le plus haut pour un FileName définit, c'est ce qui justifie ma tentative avec une sous-requête.

J'aurais pt du le dire avant, mais je passe par un DataSet. Car je vois dans ton exemple que tu ajoutes un "FROM" qui est explicite dans le DataSet (sauf si j'ai encore rien comprit)

voici la structure de ma table

+---------------------------+
|Primaire| Nom      | Type  |
+---------------------------+
|   Oui  | FileName | Texte |
|   Oui  | IdxArchiv| Int   |
|   Non  | Type     | String|
|   Non  | Data     | String|
+---------------------------+


En espérant avoir été complet dans mon énoncé !