Requete SQL ... for Power User

Requete SQL ... for Power User - SQL/NoSQL - Programmation

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
Reply

Marsh Posté le 06-08-2002 à 01:55:14   

Reply

Marsh Posté le 06-08-2002 à 06:29:14    

.

Reply

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...
 


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

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...
 
 



:hello:  
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...


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 06-08-2002 à 11:59:08    

kuroineko a écrit a écrit :

 :hello:  
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.

Reply

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);

Reply

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

Reply

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

Reply

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


Message édité par Rob Roy le 06-08-2002 à 16:11:24
Reply

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)

Reply

Marsh Posté le 06-08-2002 à 16:17:03   

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed