2010-08-26 6 views
2

Voici ma déclaration sqlorder by et ASC DESC avec le groupe par

SELECT DISTINCT article_categories.category_id, 
    article_id,article_title,article_intro,article_content, 
    category_name_ar 
FROM articles,article_categories 
WHERE articles.category_id=article_categories.category_id 
    AND article_type='admin' 
    AND category_case='active' 
GROUP BY article_categories.category_id 
ORDER BY article_categories.category_id ASC, 
      article_date,article_time DESC 
LIMIT 10 

Je voudrais récupérer les premières DISTINCTS 10 catégories. En outre, je voudrais récupérer les articles équivalents où l'article articles.category_id est égal à article_categories.category_id. Jusqu'à présent le résultat est bon mais ce que je cherche est de classer le résultat par category_id et dans le même temps de classer le résultat par article_date, article_time DESC.

Toute aide sera appréciée à l'avance

+0

si je comprends que vous avez besoin: .... article_date DESC, article_time DESC? –

+0

Droit, et dans le même temps article_categories.category_id ASC, est-ce clair pour vous? – Hassan

+0

Pour le rendre plus clair, je voudrais commander le résultat par l'ASC category_id. En outre, je voudrais obtenir le dernier article ajouté sous chaque catégorie en utilisant article_date DESC, article_time DESC – Hassan

Répondre

2
SELECT distinct c.category_id,... 
FROM articles a,article_categories c 
WHERE a.category_id=c.category_id 
AND ... 
AND a.article_id in 
(SELECT max(a1.article_id) 
FROM articles a1 
 WHERE a1.category_id=c.category_id) 
ORDER BY c.category_id ASC 

... S'il vous plaît remplacer avec des champs et des conditions supplémentaires dont vous avez besoin.

+0

Je dois utiliser group by car il continue à répéter le category_name_ar, dont je n'ai pas besoin. Ce que je cherche, c'est les dix premières catégories d'articles commandées par le category_id. En outre, le dernier article ajouté sous chaque catégorie – Hassan

+0

1. Le fait que votre requête ne renvoie pas ce que vous attendez n'implique pas qu'il devrait être résolu par groupe par. 2. La commande par ne peut pas être utilisée pour obtenir les derniers enregistrements. Encore une question: est-ce que vous incrémentez article_id d'un enregistrement à l'autre? – spbfox

+0

oui je fais ...... – Hassan

0

ajouter que desc comme

ORDER BY article_categories.category_id ASC, 
      article_date DESC,article_time DESC 
+0

Je l'ai essayé mais il me donne toujours le même résultat – Hassan

+0

vous sûr, son besoin de travailler –

1

Je l'ai

SELECT DISTINCT article_categories.category_id, 
    article_id,article_title,article_intro,article_content, 
    category_name_ar 
FROM articles,article_categories 
WHERE articles.category_id=article_categories.category_id 
    AND article_type='admin' 
    AND category_case='active' 
ORDER BY article_categories.category_id ASC, 
      article_date desc,article_time DESC 
LIMIT 10 

Merci à tous de votre conseille, il a aidé beaucoup

Questions connexes