Requete SQL ... for Power User - SQL/NoSQL - Programmation
Marsh Posté le 06-08-2002 à 09:47:00
Rob Roy a écrit a écrit : . |
heu la je pense plutot a une structure function mais par contre pour t'aider a la rediger la je ne pense t'etre d'aucun secours...
Marsh Posté le 06-08-2002 à 09:54:37
kuroineko a écrit a écrit : heu la je pense plutot a une structure function mais par contre pour t'aider a la rediger la je ne pense t'etre d'aucun secours... |
function extract(int) return int as '
....recherche tous les MAXstatus
....selectionner dans cette liste celui dont UID est demander dans la fonction'
language pl/sql;
peut etre...
Marsh Posté le 06-08-2002 à 11:59:08
kuroineko a écrit a écrit : function extract(int) return int as ' ....recherche tous les MAXstatus ....selectionner dans cette liste celui dont UID est demander dans la fonction' language pl/sql; peut etre... |
En fait, dand ce genre de cas, je rajouterais plus tôt un champ VALID_FROM et un champ VALID_TO dans ta table. Cela indique la valdité de chacune des lignes de ta table Status.
Comme ça, quand tu fais ta query, tu as juste besoin de faire
SELECT USER, STATUS FROM ...... WHERE Status.VALID_TO > NOW();
Le seul truc, c'est que quand tu ajoutes un status, faut que tu updates le VALID_TO de l'ancien status.
Marsh Posté le 06-08-2002 à 13:51:55
je crois que j'ai plus simple:
select user.id_user,max(id_statut) from user,statut where user.id_user=statut.id_user group by(user.id_user);
Marsh Posté le 06-08-2002 à 15:53:06
justement ca ne marche pas
cette requette bizarrement va classer les utilisateurs selon leur ordre de id_statut decroissant
c deja pas pas mal
mais bon si il y avait une solution directe, je suis pas contre
Marsh Posté le 06-08-2002 à 16:03:41
je ne comprends pas ce que tu veux faire,
pourrais-tu mettre un exemple avec des données et le résultat que tu attends
Marsh Posté le 06-08-2002 à 16:10:42
exemples de BD
USER
id_user
1
2
3
STATUT
id_statut #id_user
1 1
2 2
3 1
4 3
5 2
je veux que ma requete me renvoie
id_statut #id_user
3 1
5 2
4 3
avec eventuellement le droit de supprimmer une des lignes si elle ne correspond pas a un critere (mais ca c une autre chose )
voila
Marsh Posté le 06-08-2002 à 16:17:03
bah finalement, c bien ce que j'avais compris et c bien le résultat que j'obtiens avec la requete que j'ai posté plus haut
(testé avec mysql)
Marsh Posté le 06-08-2002 à 16:34:04
le probleme c que ma requete n'est pas toute simple , c vrai que je n'ai pas tout dit
En fait, je fais des criteres de selection dans les groupes et ca chie des bulles
je crois que je vais etre obligé de bosser en 2 requetes
merci quand meme
Marsh Posté le 06-08-2002 à 01:55:14
Voila imaginons une table statut qui serait en relation avec une table user par une contrainte d'intégrité fonctionnelle
rapidement :
user (id_user, ...)
statut(id_statut,...,#id_user) (xxx une relation quelconque)
concretement un user a un statut a un moment ou un autre et peut en avoir un autre apres
Si l'on imagine ces relations au stade de devellopement, on peut tres bien imaginer un user avoir eut plusieurs statut et certains un seul.
Ce que j'aimerais c'est obtenir pour TOUS les id_user leur dernier statut cad pour moi son id_statut le plus grand
et tout cela dans UNE meme requete.
en gros j'aurais comme resultat :
id_user | plus grand id_statut
voila j'ai eut faire toutes les combinaisons possibles avec max, group by, et les select imbriqués mais je manque de fluide ce soir.
Merci a vous d'avance !
PS : fo que ca fonctionne pour access / SQL SERVER
Message édité par Rob Roy le 06-08-2002 à 03:54:40