Requete min sur une liste - SQL/NoSQL - Programmation
Marsh Posté le 18-12-2006 à 10:56:19
Citation : Je souhaite à partir d'une requete obtenir pour une valeur de E donnée, la suivante dans la table, c'est à dire l'ID de la valeur suivante ayant pour valeur E. |
Cette phrase ne veut rien dire.
Tu veux quoi au juste ?
Exemples.
Parceque là en fait, c'est illogique comme question
Marsh Posté le 18-12-2006 à 11:47:50
Gregouf > Ca signifie qu'à l'instance ID X j'ai une valeur Y dans le champ E. Je veux que ma requete renvoie la valeur X' correspondant à la prochaine iteration de la valeur Y dans le champ E.
C'est plus clair ??
Marsh Posté le 18-12-2006 à 12:14:29
J'imagine que c'est ça, mais je voudrais être sûr
En tout cas, ça va se solder par une sous-requete avec un MIN()
Marsh Posté le 18-12-2006 à 15:07:28
Oui je suppose . Le truc c'est que la table de départ fait 2500000, donc faut reduire ça de maniere intelligente (donc pas ce que j'ai fait pour l'instant ). Car si je lui demande de generer dans une premiere table seulement la partie (((Table_1.ID)>[Table]![ID]) AND ((Table_1.E)=[Table]![E])) le bougre à du mal, faut dire que je fais le traitement sur un portable et je n'ai que ca sous la main.
Donc l'idée de base que tu proposes c'est de faire la requete que j'ai indiqué en 1. puis passer par un Min direct en 2.
avec un truc du style ID1 et Min(ID2) ??
Merci
Marsh Posté le 18-12-2006 à 15:39:39
bon, alors :
ID et valeur de E pour l'ID=25 :
|
Maintenant, liste de tous les ID suppérieurs où E est égale à la même valeur que celui de l'ID=25 :
|
Maintenant, je veux parmis les ID supérieurs, le plus petit :
|
Suppression des filtres inutiles sur t2, puisqu'on filtre déjà avec t3 sur sa clé primaire id (on peut donc pas faire mieux) :
|
Et voilà
Marsh Posté le 19-12-2006 à 06:24:56
Merci pour ta reponse complete, j'ai compris la connerie que j'avais faite et maintenant ca marche.
Marsh Posté le 18-12-2006 à 09:38:49
Bonjour à tous,
Je pense que ma question est assez triviale mais je ne connais pas particulierement SQL (j'utilise Access), donc je viens la soumettre ici:
J'ai une table de la forme ID(Cle primaire)/A/B/C/D/E
Je souhaite à partir d'une requete obtenir pour une valeur de E donnée, la suivante dans la table, c'est à dire l'ID de la valeur suivante ayant pour valeur E.
J'ai essayé un truc comme ca :
SELECT Table.ID, Val(Table!D) AS D1, Table.E, Table_1.ID, Table_1.E
FROM Table, Table AS Table_1
GROUP BY Table.ID, Val(Table!D), Table.MID, Table_1.ID, Table_1.E
HAVING (((Table_1.ID)>[Table]![ID]) AND ((Table_1.E)=[Table]![E]))
ORDER BY Table.ID;
La requete n'est pas bonne car (Table_1.ID)>[Table]![ID]) me renvoie l'ensemble des élements qui ont une ID plus grande alors que je voudrais seulement le suivant. J'ai essaye un Min() mais ca ne marche pas.
Merci d'avance,
Greg.