从答案表中选择行

时间:2019-03-19 13:23:09

标签: mysql sql

我有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}'";

1 个答案:

答案 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语句。