Bonjour à tous,
Je cherche à faire une requete dont le résultat est la réponse à la question :
Existe il un matériel qui possède pour famille 1 la sous-famille 3,
ET qui possède pour famille 2 la sous-famille 2,
ET pour la famille 3 la sous-famille 2...
pour mieux comprendre j'explique :
Un matériel possède un type de matériel, pouvant être clavier par exemple.
Ce matériel possède une ou plusieurs familles, donc connectique, langue...etc
Chaque famille possède plusieurs sous-familles, donc connectique possède usb, ps2.., langue possède francais, russe...
Un matériel ne peut posséder qu'une sous-famille par famille.
Donc en plus clair, je voudrai savoir si un matériel ayant comme type de matériel clavier, possédant pour la famille connectique la sous-famille usb, ET possédant pour la famille langue la sous-famille francais...etc..existe ou pas.
Merci de pouvoir m'éclairer je bloque dessus depuis 8h30 ce matin..
mes derniers essais on été effectué avec union et intersect, où intersect semble mieux approprié.
Avec la requête suivante donc je pensais cela fonctionnel, mais pas du tout car mysql me renvoi une erreur..
[EDIT] : apparemment intersect s'utilise sur 2 tables, mais ne peut on pas sur 2 requêtes ? et tt simplement est-ce que intersect correspond à ce dont j'ai besoin ? Je ne connais ces fonction (union et intersect) que depuis ce matin, donc je ne suis pas sûr de comprendre exactement leur fonctionnement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 select id_materiel from recenser where id_famille = 1 //famille connectique and id_ss_famille = 3 //ss-famille usb intersect select id_materiel where id_famille = 2 //famille langue and id_ss_famille= 2 //ss_famille français
L'erreur est
Avez vous des idées ? Pour peut être plus de clarté, je vous met mon modèle relationnel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'intersect select id_materiel where id_famille = 2 and id_ss_famille = 2 LI' at line 5
Merci d'avance...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 type_materiel(id_type, lib_type) famille(id_fam, lib_fam) ss_famille(id_fam#, id_ss_fam, lib_ss_fam) materiel (id_mat, id_type#) recenser (id_fam#, id_ss_fam#, id_mat#)
ps : j'ai bien chercher sur les différentes discussions de ce forum, mais sans trouver de réponse sur des "restriction liées" entre elles..
Nec27
Partager