ノートの詳細ページに、ノートの総コメント、総数、総嫌いを表示します。次の3つのテーブルからデータを取得しています。mysql selectクエリの複数の結合で複数のフィールドをカウントする
tbl_note_actions
noteaction_note_id
のint(11)NOT NULL、
noteaction_user_id
のint(11)NOT NULL、noteaction_type
TINYINT(1)NOT NULL COMMENT '1 - >のように、0->嫌い'、
PRIMARY KEY(noteaction_note_id
、noteaction_user_id
)tbl_notes_comments
notepost_id
は、INT(11)NOT NULL AUTO_INCREMENT、
notepost_note_id
INT(11)NOT NULL、notepost_user_id
INT(11)NOT NULL、
notepost_message
テキストNULL NOT、
notepost_rating
TINYINT(1)NOT NULL、
notepost_parent_id
INT( 11)NOT NULL、
notepost_added_on
日時NULL NOT、
notepost_active
TINYINT(1)NOT NULL DEFAULT '1'、
notepost_deleted
TINYINT(1)NOT NULL DEFAULT '0'、
PRIMARY KEY(notepost_id
)tbl_notes
note_id
のint(11)NOT NULL AUTO_INCREMENT、
のint(11)NOT NULLと、
note_user_id
のint(11)NOT NULLと、
note_description
テキスト、NOT NULL、 PRIMARY KEY (note_id
)
合計嫌い、総嫌いおよび総コメント数が間違っています。
は、ここに私のクエリです:検索結果1が好き、1を嫌いと1コメント
SELECT
note_id,
note_notetype_id,
note_user_id,
note_name,
note_description,
COUNT(DISTINCT notepost_note_id) AS totComments,
note_id,
count(if(noteaction_type = 1, noteaction_note_id, NULL)) AS totlikes,
count(if(noteaction_type = 0, noteaction_note_id, NULL)) AS totdislikes
FROM `tbl_notes`
LEFT OUTER JOIN `tbl_users`
ON user_id= note_user_id
INNER JOIN `tbl_courses`
ON course_id = note_course_id
INNER JOIN `tbl_universities`
ON university_id = note_university_id
INNER JOIN `tbl_note_types`
ON notetype_id = note_notetype_id
LEFT OUTER JOIN `tbl_note_actions`
ON noteaction_note_id = note_id
LEFT OUTER JOIN `tbl_notes_posts`
ON notepost_note_id = note_id
WHERE `note_id` = '4'
GROUP BY note_id, notepost_id
が、実際にそれが好きな1である必要があり、1とコメント4を嫌います。
私はそれを解決するために助けてください
おかげ
参加時に別名を使用してください。 –
テーブルフィールドは既に別名であるため、エイリアス名を使用する必要はありません。私が間違っていたら私を更新してください。 :) –
あなたはテーブル構造を提供できますか? –