# Consultando campos e respostas da pesquisa

**URL:** https://meta.discourse.org/t/querying-survey-fields-and-responses/308112
**Category:** Data & reporting
**Tags:** sql-query, surveys
**Created:** [Maio 15, 2024, 6:28pm UTC](https://meta.discourse.org/t/querying-survey-fields-and-responses/308112 "2024-05-15T18:28:43Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![jordan-violet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jordan-violet/32/281428_2.png) [@jordan-violet](https://meta.discourse.org/u/jordan-violet)
#### Post date: [Maio 15, 2024, 6:28pm UTC](https://meta.discourse.org/t/querying-survey-fields-and-responses/308112/1 "2024-05-15T18:28:44Z")

</div>

Estou usando este plugin do Discourse Surveys: [GitHub - discourse/discourse-surveys](https://github.com/discourse/discourse-surveys)

Ao enviar pesquisas, vejo que botões de rádio, caixas de seleção e menus suspensos parecem ser registrados como NULL no banco de dados. Também parece ter registrado uma resposta duas vezes:

 ![slack_An2SO2hJ06](https://global.discourse-cdn.com/meta/original/4X/e/f/a/efa1b94dda0e3e6010739501c82845df6d3f048c.png)

---

<div class="post-metadata">

### Author: ![isaac](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/isaac/32/235758_2.png) [@isaac](https://meta.discourse.org/u/isaac)
#### Post date: [Maio 15, 2024, 6:42pm UTC](https://meta.discourse.org/t/querying-survey-fields-and-responses/308112/2 "2024-05-15T18:42:25Z")

</div>

O valor para

> [@jordan-violet](#):
>
> radio buttons, checkboxes, and dropdowns

são armazenados em uma tabela separada.

Isso deve te levar aonde você precisa 🙂

```sql
-- [params]
-- null int :user_id
-- string :name

SELECT s.name, s.post_id, sf.question, COALESCE(sr.value, sfo.html) AS value, sr.user_id, sr.created_at as responded_at
FROM surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE s.name = :name
AND (:user_id IS NULL OR sr.user_id = :user_id)
ORDER BY sr.user_id

```

Adicionei uma opção de consulta por usuário (quando deixada vazia, consulta todos os usuários por pesquisa), mas sinta-se à vontade para remover

> AND (:user\_id IS NULL OR sr.user\_id = :user\_id)

se você não estiver interessado nisso.

---

<div class="post-metadata">

### Author: ![jordan-violet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jordan-violet/32/281428_2.png) [@jordan-violet](https://meta.discourse.org/u/jordan-violet)
#### Post date: [Maio 15, 2024, 6:46pm UTC](https://meta.discourse.org/t/querying-survey-fields-and-responses/308112/3 "2024-05-15T18:46:46Z")

</div>

Ah, eu nem percebi essa tabela extra! Obrigado!

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [Junho 14, 2024, 6:47pm UTC](https://meta.discourse.org/t/querying-survey-fields-and-responses/308112/4 "2024-06-14T18:47:08Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
