La requête elle est un peu complexe mais je la met pour être sûre que je n'ai pas omis une jointure.
Je dois avoir toutes les données de la première table, C_P_E et éventuellement celles des autres tables. Pour y arriver je me sers de la jointure externe LEFT OUTER JOIN. Je crée une vue sur la requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 select `cpe`.`entity_id` AS `product_id`,`k`.`value` AS `sku`,`n`.`value` AS `name`,`d`.`value` AS `description`,`c`.`value` AS `cost`,`p`.`value` AS `price` from (((((`C_P_E` `cpe` left OUTER join `v_product_sku` `k` on((`cpe`.`entity_id` = `k`.`product_id`))) left OUTER join `v_product_price` `p` on((`cpe`.`entity_id` = `p`.`product_id`))) left OUTER join `v_product_cost` `c` on((`cpe`.`entity_id` = `c`.`product_id`))) left OUTER join `v_product_description` `d` on((`cpe`.`entity_id` = `d`.`product_id`))) left OUTER join `v_product_name` `n` on((`cpe`.`entity_id` = `n`.`product_id`))))
Mais quand je fais un SELECT * j'ai des lignes qui sont en doublon, au nombre de 4 en général. Avec DISTINCT j'ai le bon résultat. Ai-je mal utilisé LEFT OUTER JOIN ?
Partager