2009-05-22 8 views
0

Pour ma première table, j'ai des questions comme celle-ci:Obtenez montant total des lignes de différentes table avec correspondance ID

qid | question | date 
1  blah  22-05-2009 

puis j'ai la table commentaires

cid | qid 
1  1 
2  1 
3  1 

donc alors à mes questions tableau je pourrais avoir une colonne ajoutée qui avait total_comments qui seraient trois

J'ai essayé en utilisant ce code

SELECT 
questions.qid, 
questions.question, 
questions.date, 
sum(comments.qid) AS total_money 
FROM 
questions 
INNER JOIN comments ON comments.qid = questions.qid 
ORDER BY questions.date 
LIMIT 1 

mais il saisit seulement la première ligne quand il y a une ligne avec une date plus grande? Merci d'avance

Répondre

0

Si je comprends bien, je pense que vous voulez:

SELECT questions.qid, question, date, SUM(comments.qid) 
FROM Questions 
LEFT OUTER JOIN Comments ON Questions.qid = Comments.qid 
GROUP BY Questions.qid, Question, Date 
ORDER BY Questions.Date 
+0

cette fonctionne un peu, il semble que son obtention des résultats corrects pour QID 1, mais quand il fonctionne QID 2 c'est une mauvaise quantité, il n'y a que 2 lignes pour QID 2, mais son com en arrière comme 6 multipliant les résultats par soi-même? –

0
SELECT COUNT(qid), qid 
    FROM comments 
    GROUP BY qid 

Vous montrera le nombre de commentaires par qid.
Si vous voulez un compte qid spécifique, ce serait:

SELECT COUNT(qid) 
FROM comments 
WHERE qid = 1 
0

Vous devez avoir "GROUP BY questions.qid, questions.question, questions.date" dans votre déclaration avant la "ORDER BY".

1

Essayer:

;WITH comment_summary AS (
    SELECT comments.qid 
     ,COUNT(*) AS comment_count 
    FROM comments 
    GROUP BY comments.qid 
) 
SELECT questions.qid 
    ,questions.question 
    ,questions.date 
    ,ISNULL(comment_summary.comment_count, 0) AS comment_count 
FROM questions 
LEFT JOIN comment_summary 
    ON comment_summary.qid = questions.qid 
ORDER BY questions.date 

Ou, si votre dialecte SQL, ne prend pas en charge CTEs:

SELECT questions.qid 
    ,questions.question 
    ,questions.date 
    ,ISNULL(comment_summary.comment_count, 0) AS comment_count 
FROM questions 
LEFT JOIN (
    SELECT comments.qid 
     ,COUNT(*) AS comment_count 
    FROM comments 
    GROUP BY comments.qid 
) AS comment_summary 
    ON comment_summary.qid = questions.qid 
ORDER BY questions.date 
Questions connexes