我有3个表格:questions,options,comments_to_options(opt_comments)。 我想写一个查询,每行返回以下值,连接:对3个表格不返回所有行的MySql查询
一个问题,它的所有选项,对每个选项的所有评论。
我的查询是:
select
concat('{', '"qid":"', q.q_id, '", "qt":"', q.q_title,
'", "op":[', group_concat('{"oi":"', o.op_id, '", "ot":"', o.opt_value, '", ', oc_list, '}'
order by o.opt_upvotes desc), ']}')
as r
from questions q, options o,
(select o.op_id as ocid, concat('"oc":[', group_concat('{"oci":"', oc.opt_com_id, '", "occ":"', oc.opt_com_value, '"}'
order by oc.opt_com_added_at), ']')
as oc_list
from options o, opt_comments oc
where oc.opt_com_to=o.op_id
group by o.op_id)
as r2
where o.op_id=r2.ocid
and q.q_id=o.option_to
group by q.q_id
order by q.q_added_at desc
limit 3;
但上面的查询只给那些有他们至少一个评论的选项。 我应该如何修改?
不,我没有削减查询的任何部分,并且您的查询也只返回那些对它们有评论的选项。 –
我已经修改了查询(左连接问题,而不是其他方式)。如果您的原始查询中没有任何内容,那么子查询就显得多余了。 – Kickstart