2017-01-31 16 views
1

ごとに表示する私はこのクエリのMySQL - 列を追加し、レコード

select articles.articleID, user_votes.tagID, user_votes.count from articles 
left join article_tags on article_tags.articleID = articles.articleID 
inner join user_votes on user_votes.tagID = article_tags.tagID 

を持っており、それは、私はそれが情報でarticleIDを言うところそれは返すようにできるようにしたい、次の

"articleID" "tagID" "count" 
    "1"  "1"  "2" 
    "1"  "2" "-5" 
    "1"  "3"  "7" 
    "2"  "1"  "2" 
    "3"  "1"  "2" 
    "4"  "1"  "2" 
    "6"  "1"  "2" 
    "7"  "1"  "2" 

を返し、その記事の各tagIDごとにカウントが加算されます。

だからではなく、3回情報でarticleIDを示すの、3個のタグ、および3つの値と、それは

"1", "this doesn't matter", "4" 
"2", "...", "2" 
"3". "...", "2" 

など

を表示したい私は合計を使用してみました、私は例を使用してみましたが、私は決して可能性それを働かせる。

私が試してみた:

select articles.articleID, SUM(user_votes.count) as totalScore from articles 
left join article_tags on article_tags.articleID = articles.articleID 
left join user_votes on user_votes.tagID = article_tags.tagID 

をし、それがすべての記事ごとのカウントアップ追加され

articleID, totalScore 
    1   452 

を返します。

うまくいけば、これは意味があり、簡単な修正です。よくわかりません!

ありがとうございます。 ロブ

答えて

1

はどこにでも完全なテーブル名を入力してからあなたを節約する、エイリアスを使用しようと、また行方不明group by

select articles.articleID, SUM(user_votes.count) as totalScore from articles 
left join article_tags on article_tags.articleID = articles.articleID 
left join user_votes on user_votes.tagID = article_tags.tagID 
group by articles.articleID; -- here 

を追加します。

SELECT 
    a.articleID, SUM(v.count) AS totalScore 
FROM 
    articles a 
     LEFT JOIN 
    article_tags t ON t.articleID = a.articleID 
     LEFT JOIN 
    user_votes v ON v.tagID = t.tagID 
GROUP BY a.articleID ; -- here 
+0

私はこの作業を2時間ほど進めましたが、おそらく数秒で解決しました!あなたは、アイスクリームコーンに値するでしょうか? – robamcclellan

+0

@rob私は助けてくれると嬉しいです。 :-) – GurV

関連する問題