Bonjour !
C'est mon premier message ici... j'ai trouvé votre forum en tapant "aide MySQL". ;-) Bravo pour ce forum d'entraide !
J'essaie de faire une requête SELECT mais j'ai beaucoup de difficultés...
Soit 3 tables :
# annuaires qui contient ID_annuaire, url_annuaire, et actif (oui ou non)
# sites qui contient ID_site
# edoo qui contient ID_annuaire et ID_site
A l'entrée de la requête, je connais la valeur ID_site, on va dire qu'il est égal à 21 dans notre cas.
Ce que je veux, c'est sélectionner :
- Un url_annuaire dont actif = oui dans la table annuaires (sélection au hasard)
... si et seulement si mon N° ID_site (21) ne se trouve PAS dans la table edoo pour l'ID_annuaire correspondant.
Pour faire plus français, quand j'ai un ID_site, je veux lui assigner un "url_annuaire" qui ne lui a jamais encore été assigné d'une part, et qui est "actif" d'autre part.
Bin ça parait simple comme ça mais je sèche dessus. La dernière quête que j'ai faite ne marche pas plus que les autres.
J'ai fait ceci :
Ca ne marche pas du tout. Là où cela cale, je pense que c'est avec le "edoo.ID_annuaire = annuaire.ID_annuaire" dans le NOT IN qui finalement, ne sert à rien du tout !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT annuaire.url_annuaire, annuaire.ID_annuaire, edoo.ID_annuaire FROM annuaires AS annuaire, edoo AS edoo WHERE annuaire.actif = 'oui' AND edoo.ID_site NOT IN ( SELECT edoo.ID_annuaire FROM `edoo` AS edoo, `annuaires` AS annuaire WHERE edoo.ID_site = '21' AND edoo.ID_annuaire = annuaire.ID_annuaire ) ORDER BY RAND( ) LIMIT 1 ;
Auriez-vous une idée de la façon de faire cela ? Pourriez-vous m'aider, s'il vous plaît ?
A vous lire,
Cerise.
Partager