我有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