Selection aléatoire

Selection aléatoire - SQL/NoSQL - Programmation

Marsh Posté le 08-10-2003 à 19:36:09    

Hello, j'ai un petit problème avec une requête SQL que je n'arrive pas a faire.
Quelques explications:
 
J'ai une première table "defprod" avec comme champs:

Code :
  1. id | nom | exemplaires


 
et une seconde table "produits" avec comme champs:

Code :
  1. id | prod_id | client_id


Les deux tables sont reliées par le champ "prod_id". En gros j'ai une table avec les caractéristiques des produits (table defprod) et une autre avec les produits associés a des clients.
 
Ce que je voudrais faire c'est sélectionner aléatoirement un id de la table "defprod" si et seulement si le nombre de produits correspondants a ce type de produit (prod_id) dans la table "produits" est inférieur aux nombre situé dans le champ "exemplaires".
 
J'ai tenté :

Code :
  1. SELECT RAND(d.id)
  2. FROM defprod d, produits p
  3. WHERE d.id=p.type_id AND d.exemplaires>COUNT(p.id)


Mais j'ai le droit à:
"ERREUR Utilisation invalide de la clause GROUP"
J'oublie de préciser que je suis relativement débutant et que cette requête un peu particulière ne doit pas être fondamentalement difficile a faire.
PS: J'ai cherché dans la Doc Mysql, je n'y ai rien trouvé qui pourrait arranger mon problème
 
Merci pour votre aide  :hello:

Reply

Marsh Posté le 08-10-2003 à 19:36:09   

Reply

Marsh Posté le 08-10-2003 à 23:17:04    

up :D

Reply

Marsh Posté le 09-10-2003 à 10:04:20    

tu peux pas generer un nombre aleatoire a part et l'utiliser dans une condition WHERE id = <ton_nombre_au_pif> ?


---------------
L'inventeur de la cédille est un certain monsieur Groçon .
Reply

Marsh Posté le 09-10-2003 à 12:45:48    

souk a écrit :

tu peux pas generer un nombre aleatoire a part et l'utiliser dans une condition WHERE id = <ton_nombre_au_pif> ?
 


le problème n'est pas la :D

Reply

Marsh Posté le 09-10-2003 à 12:48:46    

Ayuget a écrit :


le problème n'est pas la :D
 


 
promis, la prochaine fois j'apprends a lire :whistle:


---------------
L'inventeur de la cédille est un certain monsieur Groçon .
Reply

Marsh Posté le 09-10-2003 à 13:11:02    

Attention :
 
Count ne renvoie qu'un seule valeur, et ne peux donc pas être comparée à un ensemble de valeur
 
Essaie comme ça  

Code :
  1. SELECT RAND(d.id)
  2.   FROM defprod d, produits p
  3.   WHERE d.id=p.type_id
  4.   AND COUNT(d.exemplaires) > COUNT(p.id)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-10-2003 à 13:17:09    

http://www.mysql.com/doc/en/GROUP-BY-Functions.html


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-10-2003 à 13:20:59    

merci pour ton aide :jap:
 
malheureusement ta requete ne fonctionne pas non plus :( (toujours le même message d'erreur)


Message édité par Ayuget le 09-10-2003 à 13:21:13
Reply

Marsh Posté le 09-10-2003 à 14:00:21    

et pourtant c'est dans ce sens qu'il faut chercher... car Count est une fonction d'aggrégation


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-10-2003 à 17:42:20    

JagStang a écrit :

et pourtant c'est dans ce sens qu'il faut chercher... car Count est une fonction d'aggrégation


franchement la je vois pas :(
 
HELP  :sweat:

Reply

Marsh Posté le 09-10-2003 à 17:42:20   

Reply

Marsh Posté le 10-10-2003 à 07:00:53    

dernier up du désespoir :sweat:

Reply

Marsh Posté le 10-10-2003 à 07:57:57    

Code :
  1. SELECT RAND(d.id)
  2.   FROM defprod d, produits p
  3.   WHERE d.id=p.type_id
  4.   AND d.exemplaires > p.id


 
Si ça joue pas, envoie le script de génération de ta bdd que je puisse tester


Message édité par jagstang le 10-10-2003 à 07:58:31

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-10-2003 à 19:50:51    

ben apparament, sans les requetes imbriquées, c'est pas possible (et je suis en mysql 3.23 :( )
J'pense que j'vais etre obligé des faire un truc avec des tableaux mais c'est beaucoup plus lourd :(

Reply

Sujets relatifs:

Leave a Replay

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