Запрос общедоступного набора данных Stackoverflow в BigQuery в Q&A SQL

у меня есть домашнее задание: Мы хотим найти все вопросы о библиотеке python pandas, а также ответы на них. Напишите запрос, который извлекает все вопросы, в заголовке которых содержится слово «панды», из таблицы posts_questions, а также все соответствующие ответы на каждый такой вопрос из таблицы post_answers, где каждая строка в возвращаемой таблице будет представлять пару (вопрос + ответ). Если у вопроса есть число ответов, один и тот же вопрос появится в нескольких строках возвращаемой таблицы. вернулся и вопроса, а также следующие поля: id, title, tag, answer_count score, время создания (creation_date) и тело текста (тело) как вопроса, так и ответа. Для тела все символы косой черты должны быть удалены в строке '\n'.

для этого я написал следующий код SQL:

SELECT  tb1.id as q_id,tb1.title as q_title,tb1.tags as q_tags
,tb1.creation_date as q_creation_date,tb1.score as q_score,tb1.answer_count as q_answer_count
,REPLACE(tb1.body,'\n',' ') as body_qustion,REPLACE(tb2.body,'\n',' ') as body_answer
from  `bigquery-public-data.stackoverflow.posts_questions` as tb1 
left join  `bigquery-public-data.stackoverflow.posts_answers`  as tb2 
on tb1.id=tb2.id
 where( tb1.title like "%pandas%" or tb1.title like "%Pandas%" or tb1.title like "%PANDAS%")
 group by tb1.id ,tb1.title ,tb1.tags,tb1.creation_date,tb1.score
,tb1.answer_count,body_qustion,body_answer

но проблема в том, что когда, например, на вопрос у меня есть 3 ответа, я ожидаю, что он вернет 3 строки для вопроса, вместо этого он возвращает только одну, и я не знаю, в чем проблема.

данные: bigquery-public-data.stackoverflow.posts_questions

и bigquery-public-data.stackoverflow.posts_answers:

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы присоединились с неправильным идентификатором таблицы ответов. В столбце идентификатора таблицы ответов представлен идентификатор самого ответа, тогда как parent_id представляет собой идентификатор вопроса. Вы можете поиграть с приведенным ниже запросом, чтобы получить больше понимания.

Запрос:

SELECT
  q.id AS q_id   #id of the question in question table
  ,
  a.id AS a_id  #id of the answer in answer table
  ,
  q.title AS q_title,
  q.tags AS q_tags,
  q.creation_date AS q_creation_date,
  q.score AS q_score,
  q.answer_count AS q_answer_count,
  REPLACE(q.body,'\n',' ') AS body_qustion,
  REPLACE(a.body,'\n',' ') AS body_answer
FROM
  `bigquery-public-data.stackoverflow.posts_questions` q
LEFT JOIN
  `bigquery-public-data.stackoverflow.posts_answers` a
ON
  q.id = a.parent_id #Joining with quesiton Ids
WHERE
  LOWER(q.title) LIKE '%pandas%'
  AND q.creation_date BETWEEN '2021-01-01'
  AND '2021-01-31'
  AND q.answer_count >1

Выход:

Другие вопросы по теме