簡體   English   中英

Mysql查詢從3個表中選擇

[英]Mysql query select from 3 tables

question (id, content, ...)answer (question_id, user_id, content,...)reaction (question_id, user_id, ...)

我可以通過 sql " SELECT q.*, COUNT(r.user_id) AS num_reaction FROM question q LEFT JOIN reaction r ON q.id = r.question_id GROUP BY q.id ORDER BY q.id DESC獲取問題的信息並計算SELECT q.*, COUNT(r.user_id) AS num_reaction FROM question q LEFT JOIN reaction r ON q.id = r.question_id GROUP BY q.id ORDER BY q.id DESC "

-- 請幫我查詢以從表 question 和 COUNT(reaction.user_id) AS num_reaction 和 COUNT(answer.user_id) AS num_reply 中選擇所有

表創建語句下方是我將使用的 SQL。 您還可以使用臨時表或 WITH 子句。


CREATE TABLE question (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    content varchar(255) 
);

CREATE TABLE answer (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    question_id INT(6),
    user_id INT(6) UNSIGNED,
    content varchar(255)
);

CREATE TABLE reaction (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    question_id INT(6),
    user_id INT(6) UNSIGNED
)

SELECT Q1.content, Q1.countAns, Q2.countReact
FROM
( select q.*, count(r.user_id) countAns 
    from question q 
    left join reaction r on q.id = r.question_id 
    group by q.id, q.content ) Q1
JOIN
( select q.*, count(r.user_id) countReact from question q left join answer r on q.id = r.question_id group by q.id, q.content ) Q2
on Q1.id = Q2.id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM