diff --git a/htdocs/includes/boxes/box_produits.php b/htdocs/includes/boxes/box_produits.php
index 1a9957b070b7890cea9de2c1555478c72aef014f..d73e7537de85c19f5b0337d2583250bfefb844a5 100644
--- a/htdocs/includes/boxes/box_produits.php
+++ b/htdocs/includes/boxes/box_produits.php
@@ -69,10 +69,9 @@ class box_produits extends ModeleBoxes {
             $sql .= " FROM ".MAIN_DB_PREFIX."product as p";
             if ($conf->categorie->enabled && !$user->rights->categorie->voir)
             {
-            	$sql .= ", ".MAIN_DB_PREFIX."categorie_product as cp";
-            	$sql .= ", ".MAIN_DB_PREFIX."categorie as c";
-            	$sql .= " WHERE cp.fk_product = p.rowid";
-              $sql .= " AND cp.fk_categorie = c.rowid AND c.visible = 1";
+            	$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON cp.fk_product = p.rowid";
+              $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie as c ON cp.fk_categorie = c.rowid";
+              $sql.= " WHERE IFNULL(c.visible,1)=1";
             }
             $sql .= " ORDER BY p.datec DESC";
             $sql .= $db->plimit($max, 0);
diff --git a/htdocs/product.class.php b/htdocs/product.class.php
index 21dfaf7deb7db914f072cfd697b38150694f7dfa..3754b94e2d06392c7a45fe187abf8bdf2282c5f3 100644
--- a/htdocs/product.class.php
+++ b/htdocs/product.class.php
@@ -1955,14 +1955,13 @@ function get_each_prod()
         $sql.= " FROM ".MAIN_DB_PREFIX."product as p";
         if ($conf->categorie->enabled && !$user->rights->categorie->voir)
         {
-           $sql .= ", ".MAIN_DB_PREFIX."categorie_product as cp";
-           $sql .= ", ".MAIN_DB_PREFIX."categorie as ca";
+           $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON cp.fk_product = p.rowid";
+           $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie as c ON cp.fk_categorie = c.rowid";
         }
         $sql.= " WHERE p.fk_product_type = 0";
         if ($conf->categorie->enabled && !$user->rights->categorie->voir)
         {
-           $sql .= " AND cp.fk_product = p.rowid";
-           $sql .= " AND cp.fk_categorie = ca.rowid AND ca.visible = 1";
+           $sql.= " AND IFNULL(c.visible,1)=1";
         }
         $resql=$this->db->query($sql);
         if ($resql)
diff --git a/htdocs/service.class.php b/htdocs/service.class.php
index fb28eabcf368fd83aed51b5adcfbaac2fd0943a2..29b0d8bf7d5da37ddefdf6c922301699cc43f392 100644
--- a/htdocs/service.class.php
+++ b/htdocs/service.class.php
@@ -208,14 +208,13 @@ class Service
         $sql.= " FROM ".MAIN_DB_PREFIX."product as p";
         if ($conf->categorie->enabled && !$user->rights->categorie->voir)
         {
-           $sql .= ", ".MAIN_DB_PREFIX."categorie_product as cp";
-           $sql .= ", ".MAIN_DB_PREFIX."categorie as ca";
+           $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON cp.fk_product = p.rowid";
+           $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie as c ON cp.fk_categorie = c.rowid";
         }
         $sql.= " WHERE p.fk_product_type = 1";
         if ($conf->categorie->enabled && !$user->rights->categorie->voir)
         {
-           $sql .= " AND cp.fk_product = p.rowid";
-           $sql .= " AND cp.fk_categorie = ca.rowid AND ca.visible = 1";
+           $sql.= " AND IFNULL(c.visible,1)=1";
         }
         $resql=$this->db->query($sql);
         if ($resql)