I can't make a request.
I have 3 tables.
I would like to have the following result:
services
| id | name |
|---|---|
| 1 | service1 |
| 2 | service2 |
settings
| id | name | default_value |
|---|---|---|
| 1 | setting1 | 10 |
| 2 | setting2 | false |
services_settings
| id | service_id | setting_id | value |
|---|---|---|---|
| 1 | 1 | 1 | 50 |
result
| service_id | final_value |
|---|---|
| 1 | 50 |
| 2 | 10 |
My query :
select
services.id,
coalesce(services_settings.value, settings.default_value)
from services
left join services_settings on services_settings.service_id = services.id
left join settings on settings.id = services_settings.setting_id and settings.name = 'setting1'
Thank you
CodePudding user response:
You should use CROSS JOIN here
select
services.id,
coalesce(services_settings.value, settings.default_value)
from services
left join services_settings on services_settings.service_id = services.id
cross join settings
where settings.name = 'setting1'
CodePudding user response:
select
services.id,
coalesce(services_settings.value, settings.default_value)
from services
left join services_settings on services_settings.service_id = services.id
left join settings on settings.id = services_settings.setting_id
WHERE settings.name = 'setting1'
