簡體   English   中英

SELECT sql語句,該語句從表中檢索一行,並從另一表中檢索許多相關行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM