合并 MYSQL 没有通用 table 表达式的查询

combine MYSQL queries without common table expression

我想从不同的 table 获取不同的数据。

我写了 3 个查询,但我无法合并这些查询。我尝试合并但没有得到实际值

    SELECT user.user_id ,email,count(post_id) as posts 
    FROM user
    left join post on user.user_id=post.user_id
    group by user.user_id 
    
    
    SELECT user.user_id,GROUP_CONCAT(members.memberIds)  as datas
    FROM members
    join user on user.user_id =members.user_id
    GROUP BY user.user_id 
    
    
    
    SELECT  user_id,
         GROUP_CONCAT(
             CASE 
                 WHEN question.question_name = 'Household'
                 THEN answer.text
                 ELSE NULL 
             END
         ) AS Household,
         GROUP_CONCAT(
             CASE 
                 WHEN question.question_name = 'Dependents' 
                 THEN answer.text
                 ELSE NULL 
             END
         ) AS Dependents
      
    FROM user_answers
    inner join answer on user_answers.answer_id=answer.answer_id
    inner join question on answer.question_id=question.question_id
    GROUP BY user_id

这里我得到了 3 个结果。

我想要一个结果

我怎样才能得到这个?

当时我尝试加入我的第一个查询和第二个查询,但我在“数据”列中得到的值不正确

我该怎么做?

通过使用您的 SQL,我将创建以下查询:

SELECT 
user.user_id,
user.email,
COUNT(post.post_id) as posts,
a.datas,
b.Household,
b.Dependents 
FROM user
left join post on user.user_id=post.user_id

-- left join first query as subquery
LEFT JOIN (
SELECT user.user_id,GROUP_CONCAT(members.memberIds)  as datas
FROM members
join user on user.user_id =members.user_id
GROUP BY user.user_id 
) AS a
ON a.user_id = user.user_id

-- left join second query as subquery
LEFT JOIN (
SELECT  user_id,
     GROUP_CONCAT(
         CASE 
             WHEN question.question_name = 'Household'
             THEN answer.text
             ELSE NULL 
         END
     ) AS Household,
     GROUP_CONCAT(
         CASE 
             WHEN question.question_name = 'Dependents' 
             THEN answer.text
             ELSE NULL 
         END
     ) AS Dependents
  
FROM user_answers
inner join answer on user_answers.answer_id=answer.answer_id
inner join question on answer.question_id=question.question_id
GROUP BY user_id
) AS c
ON c.user_id = user.user_id

group by user.user_id

LEFT JOIN 是因为可能有用户没有数据 and/or 答案。

现在还有其他方法可以做到这一点,但是如果您当前的查询给出了所需的结果,那么子查询就没有问题。