Bonsoir,

Désolé pour le titre peu explicite, je vais tâcher d'être plus clair dans ma demande.

Je suis en train de faire un référentiel web avec diverses fiches sur différents thèmes, qui ont chacune à la fin une section biblio.

Je dispose de 3 tables :

t_fiches
> id_fiche (auto-increment)
> texte_fiche
> auteur_fiche
> date_fiche
> etc.

t_biblio (1 entrée = 1 référence biblio)
> id_ref (auto-increment)
> titre_ref
> etc.

t_corres
> id_corres (auto-increment)
> id_fiche
> id_ref

La table t_corres fait le lien entre les fiches et les références biblio : une même fiche peut avoir plusieurs références biblio, une même référence biblio peut être citée dans plusieurs fiches.

Pour une fiche donnée, pour avoir toutes les références biblio détaillées, je fais une requête de ce type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT * FROM t_biblio INNER JOIN t_corres ON t_biblio.id_ref = t_corres.id_ref WHERE t_corres.id_fiche = :id_fiche
Jusque là, aucun souci.



La table t_corres contiendra par exemple les valeurs suivantes :

id_corres id_fiche id_ref
1 1 1
2 1 3
3 1 4
4 2 2
5 2 4
6 3 5


et la table t_biblio 6 références bibliographiques notées (id_ref) 1 à 6.


Ce que je veux faire...
Dans ma section "admin", je veux pouvoir ajouter facilement une référence à une fiche. Pour cela, je veux afficher la liste de toutes les références biblio qui ne sont pas déjà rattachées à la fiche pour pouvoir piocher dedans (mais donc sans afficher celles déjà rattachées).

Avec l'exemple ci-dessus, ma requête doit me sortir :
- pour la fiche 1 : références 2, 5, 6
- pour la fiche 2 : références 1, 3, 5, 6
- pour la fiche 3 : références 1, 2, 3, 4, 6

The question... : Le seul moyen que j'imagine pour l'instant, c'est une requête de non-correspondance liée sur id_ref entre la table t_biblio et une sous-requête [SELECT * FROM t_corres WHERE id_fiche = :id_fiche]
...mais je ne connais pas toutes les subtilités et possibilités de MySQL : peut-être existe-t-il une fonction / un moyen plus simple ?


Merci à toi qui a pris le temps de lire jusque là pour ton avis éclairé

BM