2010-07-27 6 views
0

Je suis pas sûr que tout problème, mais un coup d'oeil:Requête MySQL, problème avec ma jointure?

J'ai 3 tables:

  1. Catégories: id, icône, nom;
  2. Sous-catégories: id, nom, description, category_id;
  3. Rubriques: id, titre, texte, auteur, créé, sous-catégorie;

Maintenant, je suis en train obtenir cette information (requête):

$String = "SELECT 
    categories.id AS catid, 
    categories.icon AS caticon, 
    categories.name AS catname, 
    subcategories.id AS scatid, 
    subcategories.name AS scatname, 
    subcategories.description AS scatdescription, 
    subcategories.category_id AS scatcatid, 
    COUNT(topics.id) AS tid, 
    topics.title AS ttitle, 
    topics.author AS tauthor, 
    topics.created AS tcreated 
     FROM 
    categories 
LEFT JOIN 
    subcategories 
ON 
    subcategories.category_id = 1 
LEFT JOIN 
    topics 
ON 
    subcategories.id = topics.subcategory_id 
GROUP BY 
categories.id"; 

Résultat:

Catégories de 5 montrant 5 - OK, sous-catégories de 4 montrant seulement 1 premières catégories.

Peut-être que la requête est trop longue? Merci pour toute réponse.

+0

le premier JOIN, vous avez écrit: subcategories.category_id = 1 ... cela, comme je l'ai compris, se joindra à tous les sous-catégories de catégorie 1 seulement ... – sikas

Répondre

2

cette

LEFT JOIN 
    subcategories 
ON 
    subcategories.category_id = 1 

devrait être cette

LEFT JOIN 
    subcategories 
ON 
    subcategories.category_id = categories.id 
+0

bien repéré! Je viens de cligner des yeux, est allé WTF? et à gauche ... –

+0

Ne fonctionne toujours pas. – user100246

+0

obtenez-vous les mêmes résultats, ou ne fonctionne pas d'une nouvelle manière? – Nicolas78