[SQL] Problème avec une sous requête
Résolu
cyril.eseo
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
cyril.eseo Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
cyril.eseo Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai quelques lacunes en SQL et n'arrive pas à resoudre mon problème. Voila, j'ai qu'une table qui s'apelle "ma_table" avec 4 champs : id,long,lat,date. Tès simple donc.
Je veux retourner pour chaque id (identifiant), tous les informations le concernant (select*) à la date la plus recente. Donc une ligne pour chaque id.
pour ça j'ai la sous requete qui ne marche pas car elle possède plus dans un champ dans la sous requete :
La solution provisoir consite à faire :
Mais bon, si un autre id, à la même date, ça ne fonctionne pas.
Je ne voit pas comment faire du tout.
Donc si quelqu'un à une petite idée ?
Merci
J'ai quelques lacunes en SQL et n'arrive pas à resoudre mon problème. Voila, j'ai qu'une table qui s'apelle "ma_table" avec 4 champs : id,long,lat,date. Tès simple donc.
Je veux retourner pour chaque id (identifiant), tous les informations le concernant (select*) à la date la plus recente. Donc une ligne pour chaque id.
pour ça j'ai la sous requete qui ne marche pas car elle possède plus dans un champ dans la sous requete :
SELECT * FROM ma_table WHERE id and date in( SELECT id,Max(date) FROM ma_table GROUP BY id);
La solution provisoir consite à faire :
SELECT * FROM ma_table WHERE date in( SELECT Max(date) FROM ma_table GROUP BY id);
Mais bon, si un autre id, à la même date, ça ne fonctionne pas.
Je ne voit pas comment faire du tout.
Donc si quelqu'un à une petite idée ?
Merci
A voir également:
- [SQL] Problème avec une sous requête
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
5 réponses
Bonjour,
Pourquoi tu ferais pas du genre :
SELECT t1.* FROM MaTable t1 WHERE t1.date = (SELECT max(t2.Date) FROM MaTable t2 WHERE t2.ID = T1.ID)
ça devrait fonctionner.
Pourquoi tu ferais pas du genre :
SELECT t1.* FROM MaTable t1 WHERE t1.date = (SELECT max(t2.Date) FROM MaTable t2 WHERE t2.ID = T1.ID)
ça devrait fonctionner.
Salut ^^
Pourquoi ne fais tu pas cela :
Select * from maTable where id = 'id' and date in(SELECT Max(date) FROM ma_table GROUP BY id); ?
Pourquoi ne fais tu pas cela :
Select * from maTable where id = 'id' and date in(SELECT Max(date) FROM ma_table GROUP BY id); ?
rénolipus :
Le goupe by ne marche pas. J'ai une erreur avec la fonction agregat. Je crois que parce que long ne fais pas partie du group by.
JoloKossovar:
C'est vrais c'est pas mal ça, mais comment faire pour avoir tous les id ?
Parce que je veux connaitre les informations à la date la plus recente de chaque id.
De ce fait, je n'ai pas d'id particulier.
Merci pour vos reponses.
Le goupe by ne marche pas. J'ai une erreur avec la fonction agregat. Je crois que parce que long ne fais pas partie du group by.
JoloKossovar:
C'est vrais c'est pas mal ça, mais comment faire pour avoir tous les id ?
Parce que je veux connaitre les informations à la date la plus recente de chaque id.
De ce fait, je n'ai pas d'id particulier.
Merci pour vos reponses.
Merci beaucoup Rastafman, c'est exactement ça.
Pour être franc je n'y aurais pas pensé.
Vive SQL et longue vie à ce forum.
solution :
SELECT t1.* FROM MaTable t1 WHERE t1.date = (SELECT max(t2.Date) FROM MaTable t2 WHERE t2.ID = T1.ID)
Pour être franc je n'y aurais pas pensé.
Vive SQL et longue vie à ce forum.
solution :
SELECT t1.* FROM MaTable t1 WHERE t1.date = (SELECT max(t2.Date) FROM MaTable t2 WHERE t2.ID = T1.ID)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question