2011-05-31 3 views
0

J'ai un problème avec MySQL. J'ai deux tables, catégories et sujets. Je veux sélectionner toutes les catégories et rejoindre les sujets où categories.id est égal au maximum topics.id où topics.cat_id est égal à categories.id. Fondamentalement, j'essaie de montrer une liste de catégories et ensuite le sujet le plus récent sous cette catégorie.Questions et catégories de requêtes à partir de plusieurs tables

Voici mon instruction select jusqu'à présent:

SELECT 
    * 
FROM 
    categories 
LEFT JOIN 
    topics 
ON 
    categories.cat_id = (SELECT 
          MAX(topics.id), topic_cat 
         FROM 
          topics 
         WHERE 
          topic_cat = categories.cat_id) 
GROUP BY 
    categories.cat_id 

Comment puis-je faire efficacement que? Je reçois une erreur "L'opérande doit contenir 1 colonne (s)".

Répondre

0

Vous devriez envisager de mettre à jour votre clause select pour ne tirer les colonnes dont vous avez besoin des deux tables (il y aura probablement des colonnes en double avec *), mais donner un coup de feu ce:

select * 
from categories c 
left join topics t 
    on c.cat_id = t.topic_cat 
    and t.id = (select MAX(id) from topics where topic_cat = c.cat_id) 
+0

Merci beaucoup! Ça a marché. Et merci pour la suggestion sur la clause select, je vais le faire, je voulais juste faire court et doux sur ici. – adamcole83

+0

@ adamcole83 Heureusement que cela a fonctionné pour vous ... Veuillez accepter la réponse en cliquant sur la coche verte à côté de la réponse. – Fosco

Questions connexes