Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2011, 12h06   #1
Invité de passage
 
Inscription : mars 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 2
Points : 0
Points : 0
Par défaut Modifier une requête besoin d'aide

Bonjour,

Je sollicite votre aide pour effectuer une sous-requête dans une requête principale pour optimiser une de mes fonctions, voici les tables utilisées

Code :
1
2
3
4
5
6
7
8
9
TABLE Catégories :
 
Champ 	Type 	NULL 	Défaut 	Commentaires
categories_id 	int(11) 	Non  	  	 
categories_image 	varchar(64) 	Oui  	NULL  	 
parent_id 	int(11) 	Non  	0  	 
sort_order 	int(3) 	Oui  	NULL  	 
date_added 	datetime 	Oui  	NULL  	 
last_modified 	datetime 	Oui  	NULL
Code :
1
2
3
4
5
TABLE products_to_categories 
 
Champ 	Type 	NULL 	Défaut 	Commentaires
products_id 	int(11) 	Non  	  	 
categories_id 	int(11) 	Non
Chaque catégories à un identifiant unique et un parent dans la table catégories, l'identifiant unique est repris autant de fois qu'il y a de produit dans la table products_to_categories

Ma requête actuelle est dans $subcategories_query utilisée dans une fonction php complète ci-dessous qui récupère toutes les sous-cat d'une catégories mère avec son identifiant ( $parent_id)

Code :
1
2
3
4
5
6
7
8
9
  FUNCTION tep_get_subcategories(&$subcategories_array, $parent_id = 0) {
    $subcategories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$parent_id . "'");
    while ($subcategories = tep_db_fetch_array($subcategories_query)) {
      $subcategories_array[sizeof($subcategories_array)] = $subcategories['categories_id'];
      IF ($subcategories['categories_id'] != $parent_id) {
        tep_get_subcategories($subcategories_array, $subcategories['categories_id']);
      }
    }
  }
Je voudrais lier cette table à products_to_categories pour ne récupérer que les identifiants de catégories contenant des produits mais je ne sais comment m'y prendre, j'ai pensé a une sous-requête mais je me heurte à la jointure que je n'arrive pas à écrire.

Merci d'avant pour votre aide,

Cdt,
bart0356 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 13h54   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Code :
1
2
3
4
SELECT c.categories_id
  FROM categories c
 WHERE c.parent_id = $parent_id
   AND EXISTS (SELECT 1 FROM products_to_categories p WHERE p.categories_id = c.categories_id)
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h25.


 
 
 
 
Partenaires

Hébergement Web