Hello,
Je travaille sur 3 tables : item, contact_item_link et contact.
Voici leur description simpilifiée .
Dans mon application, je possède une grille sur les "item" et désirerais afficher le nom d'un fabriquant de cet article (n'importe lequel). Le fabriquant d'un article est trouvé grâce au champ "coitlnk_is_manuf" qui vaut "true".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 ----------------------------------- CREATE TABLE `item` ( `item_id` int(10) unsigned NOT NULL auto_increment, `item_name` varchar(255) NOT NULL, PRIMARY KEY (`item_id`), ); ----------------------------------- CREATE TABLE `contact_item_link` ( `contact_item_link_id` int(10) unsigned NOT NULL auto_increment, `coitlnk_contact_fk` int(10) unsigned NOT NULL, `coitlnk_item_fk` int(10) unsigned NOT NULL, `coitlnk_is_manuf` tinyint(1) NOT NULL default '0', PRIMARY KEY (`contact_item_link_id`), CONSTRAINT `fk_contact_item_link_contact` FOREIGN KEY (`coitlnk_contact_fk`) REFERENCES `contact` (`contact_id`), CONSTRAINT `fk_contact_item_link_item` FOREIGN KEY (`coitlnk_item_fk`) REFERENCES `item` (`item_id`) ); ----------------------------------- CREATE TABLE `contact` ( `contact_id` int(10) unsigned NOT NULL auto_increment, `cont_name` varchar(100) NOT NULL, PRIMARY KEY (`contact_id`) ) -----------------------------------
Ma requête actulle fonctionne très bien si un seul "contact_item_link" lié à mon article possède ce champ à "true". Si par exemple il en existe 2, mon article apparaîtra 2 fois dans ma grille = normal ==> mais comment faire pour n'afficher qu'un seul "item" avec le premier fabriquant trouvé.
Voici ma requête actuelle :
Est-il possible de "jouer" avec "LIMIT" sur les "JOIN" ? Je n'ai pas réussi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ----------------------------------- SELECT cont_manuf.cont_name as 'calc_manuf', item.* FROM pxyeasygest_prod.item left outer join pxyeasygest_prod.contact_item_link coitlnk_supp on ((coitlnk_supp.coitlnk_item_fk = item_id) and (coitlnk_supp.coitlnk_is_default is true)) left outer join pxyeasygest_prod.contact_item_link coitlnk_manuf on ((coitlnk_manuf.coitlnk_item_fk = item_id) and (coitlnk_manuf.coitlnk_is_manuf is true)) left outer join pxyeasygest_prod.contact cont_manuf on (cont_manuf.contact_id = coitlnk_manuf.coitlnk_contact_fk) where (item_id = 3); -----------------------------------
Merci d'avance.
Partager