maalicius a écrit :
En faisant : select ctpr_id, count(facility_id) from Table where run_id='11517'
group by ctpr_id
|
Salut
Déjà ta requête est mal formulée car elle laisse croire à ceux qui la lisent que tu veux compter les facility_id alors qu'en réalité elle compte les cptr_id identiques. Donc tu aurais pu écrire
Code :
- select ctpr_id, count(cptr_id) from Table where run_id='11517' group by ctpr_id
|
ou bien encore plus simple
Code :
- select ctpr_id, count(*) from Table where run_id='11517' group by ctpr_id
|
Ce qui aurait produit le même résultat.
maalicius a écrit :
Mon problème est le suivant:
je veux pour chaque ctpr_id tel que count(facility_id)>1 il faut que je crée une nouvelle ctpr_id dans la table que j'associerai a une facility_id de tel façon qu'à la fin en faisant le count pour chaque ctpr_id je n'aurai qu'une facility_id.
Est ce que c'est faisable qu'avec des requête sql ou faudra utiliser un script PL/SQL?
|
Il te faut passer par un script. Lui seul peut partir d'un select pour récupérer le résultat, le modifier (car tu changes l'id) et updater la ligne... sauf si ton cptr_id est associé à un auto-incrément. Dans ce cas tu peux faire un
Code :
- update Table set cptr_id=default where cptr_id in (select cptr_id from Table where run_id='11517' group by cptr_id having count(*) > 1)
|
Message édité par Sve@r le 13-02-2012 à 02:06:14