# Lista de e-mails de usuários que assistem a uma categoria específica

**URL:** <https://meta.discourse.org/t/list-of-emails-of-users-watching-a-specific-category/198171>\
**Category:** Data & reporting\
**Tags:** sql-query\
**Created:** [26 Julho , 2021 09:19 UTC](https://meta.discourse.org/t/list-of-emails-of-users-watching-a-specific-category/198171 "2021-07-26T09:19:46Z")\
**Posts on this page:** 1\
**Showing post:** 6

<div class="post-metadata">

**Author:** ![simonk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simonk/32/247950_2.png) [@simonk](https://meta.discourse.org/u/simonk)\
**Post date:** [5 Outubro , 2021 17:45 UTC](https://meta.discourse.org/t/list-of-emails-of-users-watching-a-specific-category/198171/6 "2021-10-05T17:45:13Z")

</div>

> [@alehandrof](#):
>
> Não entendo por que você usou `WHERE ue.primary = true` em vez de `AND ue.primary = true`. A consulta sempre exige um `WHERE`?

Não exatamente. Talvez fique mais claro se reformatarmos um pouco a consulta do @simon:

```sql
SELECT
    cu.*,
    ue.email
FROM category_users cu
JOIN user_emails ue ON ue.user_id = cu.user_id
WHERE (category_id = '10' AND ue.primary = true)

```

As condições `category_id` e `ue.primary` fazem parte da cláusula `WHERE`, unidas por `AND`. Se você remover uma das condições, remove o `AND`, mas mantém a cláusula `WHERE`.

A maioria das consultas SQL simples segue este formato:

```sql
SELECT <coisas_que_você_quer>
FROM <tabelas>
WHERE <condições_de_filtro>

```

Você pode omitir a cláusula `WHERE` por completo, mas aí receberá **todas** as linhas das tabelas que especificou.

Aqui está sua consulta original (reformatada):

```sql
SELECT *
FROM category_users
WHERE category_id = '10'

```

- “`SELECT *`” significa que você quer que a consulta retorne todas as colunas de todas as tabelas envolvidas.

- “`FROM category_users`” indica a tabela que você deseja consultar. A tabela `category_users` contém linhas mais ou menos assim:

- “`WHERE category_id = '10'`” significa que você só está interessado nas linhas onde o valor na coluna `category_id` é `10`. Sem essa linha, você receberia **todas** as linhas da tabela `category_users`.

@simon forneceu uma nova versão que adicionou o endereço de e-mail do usuário:

> [@simon](#):
>
> ```sql
> SELECT
> cu.*,
> ue.email
> FROM category_users cu
> JOIN user_emails ue
> ON ue.user_id = cu.user_id
> WHERE category_id = '10'
> AND ue.primary = true
> 
> ```

Essa consulta fez algumas alterações em relação à sua original, por 2 motivos: os endereços de e-mail são armazenados em uma tabela diferente (a tabela `user_emails`), e os usuários podem ter mais de um endereço de e-mail.

- Na cláusula `SELECT`:

- Na cláusula `FROM`:

Então, como você não queria restringir sua pesquisa a uma única categoria, precisava apenas remover o filtro `category_id`. Você não quer remover toda a cláusula `WHERE`, porque ainda deseja retornar apenas endereços de e-mail principais. Em outras palavras, sua condição de filtro mudou de:

```sql
category_id = '10' AND ue.primary = true

```

para

```sql
ue.primary = true

```

Ufa! Espero que tudo isso faça sentido 🤓

---

_[View the full topic](https://meta.discourse.org/t/list-of-emails-of-users-watching-a-specific-category/198171)._
