Hey,
you could just use

SELECT
        features.id,
        features.name,
        company_features.company_id = 1 as active

regards,
Szymon

On Mon, 8 Apr 2019 at 09:55, Arup Rakshit <a...@zeit.io> wrote:

> I have 2 tables Company and Feature. They are connected via a join table
> called CompanyFeature. I want to build a result set where it will have id,
> name and a custom boolean column. This boolean column is there to say if
> the feature is present for the company or not.
>
> Company table:
>
>     | id | name |
>     |----|------|
>     | 1  | c1   |
>     | 2  | c2   |
>     | 3  | c3   |
>
> Feature table:
>
>     | id | name |
>     |----|------|
>     | 1  | f1   |
>     | 2  | f2   |
>     | 3  | f3   |
>
> Company Feature table:
>
>     | id | feature_id | company_id |
>     |----|------------|------------|
>     | 1  | 2          | 1          |
>     | 2  | 1          | 1          |
>     | 3  | 3          | 2          |
>
> The result should look like for company `c1`:
>
>     | id | name | active |
>     |----|------|--------|
>     | 1  | f1   | t      |
>     | 2  | f2   | t      |
>     | 3  | f3   | f      |
>
> I tried something like:
>
> SELECT
>         features.id,
>         features.name,
>         CASE WHEN company_features.company_id = 1 THEN
>                 TRUE
>         ELSE
>                 FALSE
>         END AS active
> FROM
>         features
>         LEFT JOIN company_features ON company_features.feature_id =
> features.id
>
> It works. But is there any better way to achieve this?
>
>
> Thanks,
>
> Arup Rakshit
> a...@zeit.io
>
>
>
>
>
>

Reply via email to