requête originale.. mais est ce faisable ?

requête originale.. mais est ce faisable ? - SQL/NoSQL - Programmation

Marsh Posté le 28-07-2005 à 00:42:27    

Salut
je continue ma série de questions peut être étranges sur des requêtes.
 
En simplifiant mon problème, ça donne ça :
 
Problème
J'ai une table T qui contient 2 id
id1
id2
 
Je voudrais avoir pour chaque id2 différent, le nombre de fois où il a été associée pour la première fois à un id1
 
Exemple
(id1,id2)
(1,3)
(2,2)
(2,4)
(1,2)
(2,3)
(3,3)
 
Résultat
ce qui donne, pour chaque id2 différent  
 
3 a été 2 fois le premier id2 associé à un id1
2 a été 1 fois le premier id2 associé à un id1
4 a été 0 fois le premier id2 associé à un id1
 
Précisions/Contrainte
- il y a 2 tables qui sont en relation avec id1 et id2, la table T étant une table de liaison entre les 2 autres (cela peut peut être aider ?)
- la table dispose d'un id0 auto_increment qui peux aider peut être
- 1 requete sans sous requete, sinon c'est moins fun ;-)
 
 
Je ne vois pas du tout comment faire. J'y ai réfléchi pourtant, mais non... ! :-(
 
 
Merci d'avance


Message édité par matthieu_phpmv le 28-07-2005 à 00:53:41
Reply

Marsh Posté le 28-07-2005 à 00:42:27   

Reply

Marsh Posté le 28-07-2005 à 01:56:01    

Tu veux ça, mais en une seule requête, c'est bien ça ?
 
Bon courrage :D (mais c'est peut-être faisable qui sait ?)
 

Code :
  1. select Cast(t3.id2 as varchar) + ' a été ' + Cast(count(distinct t1.id1) as varchar) + ' fois le premier id2 a être associé à un id1'
  2. from test t3, test t1
  3. where not exists (select null from test t2 where t2.id2 <> t1.id2 and t2.id1 = t1.id1 and t1.id0 > t2.id0)
  4. and t3.id2 *= t1.id2
  5. group by t3.id2
  6. order by count(distinct t1.id1) desc


 

Code :
  1. 3 a été 2 fois le premier id2 a être associé à un id1
  2. 2 a été 1 fois le premier id2 a être associé à un id1
  3. 4 a été 0 fois le premier id2 a être associé à un id1

Reply

Marsh Posté le 28-07-2005 à 02:03:25    

bon bravo :)
même avec une sous requête c'est bien chaud comme tu le montres !
 
Je ne pense pas que ce soit possible en une même requête, mais qui sait.
 
Je vais y réfléchir demain, quand j'aurai tous mes moyens.

Reply

Sujets relatifs:

Leave a Replay

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