[英]SELECT sql statement that retrieves one row from a table and many related rows from other table
我在投票脚本中工作,我有两个表{hs_questions_q} {hs_answers_ans},第一个存储问题,第二个存储答案
我用这个SQL语句来检索数据
SELECT * FROM hs_questions_q INNER JOIN hs_answers_ans ON id_q=idq_ans WHERE active_q ='1' and home_q ='1' ORDER BY id_q DESC limit 1
我想知道的是,我无法在我的PHP代码中处理的是此查询如何仅从问题表和答案表中返回最后一行,但是我需要从问题表和所有相关行中检索最后一行从答案表到它
这将在表格中为每个问题返回1行,而不是答案的num行:
我假设结构:
hs_questions_q (id,desc)
hs_answers_ans(id,desc)
SELECT question.desc, group_concat(hs_answers_ans.desc SEPARATOR '#')
FROM (select *
from hs_questions_q
where active_q ='1' and home_q ='1' ORDER BY id_q DESC limit 1) question
INNER JOIN hs_answers_ans ON id_q=idq_ans
group by question.id
result:
question1 | Answer1#Answer2#Answer3
稍后,您可以在php端检索结果后用“#”分隔。
如果超出允许的数据包大小,您可能会得到截断的答案。 你可以解决
SET SESSION group_concat_max_len = 6000(any threshold);
我认为这大致就是您要寻找的东西:
SELECT * FROM
(select *
from hs_questions_q
where active_q ='1' and home_q ='1' ORDER BY id_q DESC limit 1) question
INNER JOIN hs_answers_ans ON id_q=idq_ans
我不知道active_q和home_q是否属于问题表或答案
这是因为您试图获取一行并将其与多于一行的不同数据结合在一起……我认为这行不通。
我会选择问题,然后使用问题中的ID分别获取所有答案。
select * from hs_answer_ans where idq_ans in (select id_q from hs_questions_q where active_q ='1' and home_q ='1' ORDER BY id_q DESC limit 1)
抱歉,评论中有错字... :)
此查询应为您提供所需的结果:
SELECT *
FROM `hs_questions_q`
INNER JOIN `hs_answers_ans` ON `id_q` = `idq_ans`
WHERE `idq_ans` = (
SELECT MAX(`id_q`)
FROM `hs_questions_q`
WHERE `active_q` ='1'
AND `home_q` ='1'
);
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.