Requête et sous requête

GODZP
Invité n'ayant pas de compte PHPfrance

14 mars 2008, 16:17

Bonjour à tout le monde...
Voici mon petit problème de débutant en SQL:
J'ai une table tldata (ayant une dixaine de colonnes)
j'ai besoin de créer une nouvelle table avec les 3 colonnes suivante:
Exemple
Table essaie (TLInstance, Timestamp, Data)

TLInstance : est le nom de l'objet (25 objets différent)
Timestamp : est la date et l'heure d'enregistrement de l'objet
Data :est la valeur qu'a l'objet lors de l'enregistrement.

J'ai besoin d'extraire la dernière valeur de chacun des objet enregistrés. (selon la date/heure).

Pour l'instant avec ma petite programmation que j'ai fait je réussi à obtenir seulement le dernier enregistrement de chacun des objets ainsi que la date/heure (TLInstance, Timestamp).

Code :

SELECT TLInstance AS Points, Max(Timestamp) AS alarme INTO essaie
FROM tldata
GROUP BY TLInstance;


À chaque fois que j'essaie d'ajouter la colonne Data j'obtiens une erreur....

Comment puis-je ajouter la colonne Data à ma petite programmation (probablement une sous-requête??)

J'utilise les requêtes SQL dans Access pour atteindre une table lier de SQL SERVER

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 mars 2008, 14:14

Et où ajoutes-tu la colonne data ? :)

Il te faut en effet l'ajouter non seulement dans l'instruction SELECT, mais également dans le GROUP BY puisqu'il ne s'agit pas d'éléments groupés :

Code : Tout sélectionner

SELECT TLInstance AS Points, MAX(timestamp) AS alarme, Data INTO essaie FROM tldata GROUP BY TLInstance, data;
A noter que cela te retournera tous les derniers couples TLInstance/Data et pas uniquement le dernier Data d'un TLInstance donné.

Par ailleurs, timestamp n'est pas un choix judicieux pour un nom de colonne dans la mesure où c'est un mot clé SQL... un nom du style "date_enregistrement" serait également plus explicite quant au contenu du champ :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...