Mysql запрос выбора из 3 таблиц - PullRequest
0 голосов
/ 02 апреля 2020

таблица question (id, content, ...) таблица answer (question_id, user_id, content,...) таблица reaction (question_id, user_id, ...)

Я могу получить информацию о вопросах и подсчитать num_reaction по 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"

- Пожалуйста, помогите мне запрос, чтобы выбрать все из таблицы вопрос и COUNT (response.user_id) AS num_reaction и COUNT (answer.user_id) AS num_reply

1 Ответ

0 голосов
/ 02 апреля 2020

Ниже таблицы создания операторов находится 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...