Requete simple... a premiere vue...

Requete simple... a premiere vue... - SQL/NoSQL - Programmation

Marsh Posté le 09-03-2006 à 15:01:22    

Bonjour a tous,
 
Tout d'abord veuillez m'excuser pour l'omission des accents mais j'ai un clavier qwerty...
 
Alors voila ca fait une bonne heure que je me casse la tete sur une requete SQL mais je ne trouve pas la bonne.
J'ai 3 tables :
 

Code :
  1. +------------+
  2. |   FILE     |
  3. +------------+
  4. | 1 Fichier1 |
  5. | 2 Fichier2 |
  6. | 3 Fichier3 |
  7. | 4 fichier4 |
  8. +------------+
  9. +------------+
  10. |   USER     |
  11. +------------+
  12. | 1 User1    |
  13. | 2 User2    |
  14. +------------+
  15. +-----+
  16. | REL |
  17. +-----+
  18. | 1 1 |
  19. | 1 2 |
  20. | 2 1 |
  21. | 2 2 |
  22. | 3 1 |
  23. | 4 2 |
  24. +-----+


 
Table REL = relation entre fichier et user. REL.Col1=id du fichier et REL.Col2=id du user
 
Comment faire pour selectionner tous les id des fichiers pour lesquels il n'y a qu'un seul utilisateur pour lequel il y a une relation ?
Dans cet exemple, avoir 3 et 4 dans le recordset ?
 
Le faire pour un seul fichier j'y arrive :
(enfin pour tester pour un seul fichier je m'y prendrais pas comme ca, mais je pars de cet exemple de requete pour essayer de trouver la bonne pour tester pour tous les fichiers en meme temps)

Code :
  1. SELECT idfile
  2. FROM rel_file_user
  3. WHERE
  4.   (
  5.     SELECT count(idfile)
  6.     FROM rel_file_user
  7.     WHERE idfile=4
  8.   )=1
  9.   AND idfile=4


Donc la on teste pour le fichier 4. Si il n'y a qu'une seule relation on retourne l'id du fichier (4 dans ce cas)
 
D'avance merci pour votre aide...

Reply

Marsh Posté le 09-03-2006 à 15:01:22   

Reply

Marsh Posté le 09-03-2006 à 15:36:31    

select IDFILE , COUNT(*) from REL
group by IDFILE
having COUNT(*) = 1
 
Ca marcherai pas comme ca ?
Au pire tu cache l'affichage de COUNT(*) en SQLPlus


Message édité par bpoujol le 09-03-2006 à 15:36:48

---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
Reply

Marsh Posté le 09-03-2006 à 15:49:18    

Un grand merciiiiiiiiiii :d:d:d
 
Ca fonctionne nickel :D
 
Merci bcp... Je n'avais jamais utilise "having"...

Reply

Marsh Posté le 09-03-2006 à 15:52:13    

HAVING est l'equivalent du WHERE dans les requetes d'aggrégation (je crois que c'est le mot exact) cad contenant COUNT MIN MAX SUM MOY etc...
 
Enchanté de t'avori aidé.
Bonne continuation


---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
Reply

Sujets relatifs:

Leave a Replay

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