Bah si le IN ne fonctionne pas sous mysql, c'est bien dommage
désolé, je connais le sql de cette base.
Utilise effectivement la jointure externe LEFT JOIN.
Eventuellement en utilisant une clause d'existence, faut voir si ça passe en mysql et si c'est pas trop long.
En reprenant ta requête du dessus, ça donnerait quelque chose comme ça:
select a.nom_fichier,
a.titre_fichier,
a.id_fichier,
a.id_rubrique,
SUBSTRING(a.titre_fichier,1,30) as titre_reduit2
from site_fichiers a
where not exists (select 'x' from site_rubriques b
where b.id_rubrique=a.id_rubrique)
order by a.nom_fichier
Sinon les contraintes d'intégrité, c'est un des principes des BDD relationnelles permettant de garder une base intègre.
Pour faire simple, ça t'évite les orphelins, ça assure une certaine cohérence des données et ça simplifie la maintenance de la base.
Dans ton cas, id_rubrique de la table site_fichier est une clé étrangère provenant de la table site_rubriques (dans laquelle id_rubrique est alors clé primaire). En mettant une contrainte de clé étrangère sur id_rubrique, tu empêches ainsi l'effacement accidentel des lignes dans site_rubrique dont l'id_rubrique est utilisé dans site_fichier, donc t'évites de faire des orphelins dans site_fichier.
Reste à voir si les contraintes existent sous mysql.
a pluche...