我有QUESTIONS_TB和ANSWERS_TB
是否存在单个查询,该查询将返回QUESTIONS表中的所有行以及ANSWERS表中的所有行(对于基于ID的相关表)
答案表可能有一个问题的多个答案,因此在一个查询中,我想选择与一个问题相关的所有答案行。
在此查询中,我选择的是特定问题的答案行,但子查询不允许我选择两列。
因此会引发此错误:操作数应包含1列
如何在单个查询中实现?
$question_id = 56; //example question id...
$sql = "SELECT Q.*,
(SELECT A.answer_body
AS body, A.answer_id
AS answerid, A.ask_id
AS askid, A.user_id
AS answered_by_user_id
FROM $answers_table A
INNER JOIN $questions_table Q
ON A.ask_id=Q.question_id
WHERE A.ask_id='{$question_id}') answers,
(SELECT COUNT(v.vote_id) FROM $votes_table v WHERE Q.question_id=v.ask_id AND v.vote_type=0 ) votes_down,
(SELECT COUNT(v.vote_id) FROM $votes_table v WHERE Q.question_id=v.ask_id AND v.vote_type=1) votes_up,
CONCAT(m.firstname,' ',m.lastname) author_name,m.username u_name FROM $questions_table Q
LEFT JOIN $main_table m ON Q.user_id=m.user_id
WHERE Q.question_id='{$question_id}'";
答案 0 :(得分:0)
如果您只想要问题和答案,可以执行以下SQL查询:
set serveroutput on;
DECLARE
high_val VARCHAR2(32767);
BEGIN
FOR rec IN (select PARTITION_NAME,SUBPARTITION_NAME,HIGH_VALUE from user_tab_subpartitions sp where table_name='TEST' and sp.NUM_ROWS >0) LOOP
high_val := rec.HIGH_VALUE;
IF high_val LIKE '2%' THEN
dbms_output.put_line(rec.SUBPARTITION_NAME);
END IF;
END LOOP;
END;
这将返回单个问题的所有答案。您可以在WHERE语句中更改问题。
如果您希望所有返回的答案都加入到他们的问题中,请删除WHERE语句。