Многотабличный запрос MYSQL

92
23 ноября 2021, 09:30

Есть 4 таблицы, мне нужно выбрать всех пользователей(users) со всеми воронками(funnels) которые у них есть. То есть у одного юзера есть несколько воронок.

users | leads      | landings  | funnels
----- | -----      | --------  | -------
id    | id         | id        | id
name  | user_id    | funnel_id | name
      | landing_id |

Пример что хочу получить:

User name | Funnel name
user 1    | Funnel 1
user 1    | Funnel 2
user 2    | Funnel 1
user 3    | Funnel 2

Писал такой запрос но результат оказался не тем: Получил нужно информацию, но она продублировалась много раз(ровнялось количеству записей в таблицу leads)

SELECT users.name,funnels.name
FROM users
    LEFT JOIN leads ON users.id = leads.user_id
        INNER JOIN landings ON leads.landing_id = landings.id
            RIGHT JOIN funnels ON landings.funnel_id = funnels.id
Answer 1

Будьте проще.

SELECT [DISTINCT]
       users.name,
       funnels.name
FROM users,
     leads,
     landings,
     funnels 
WHERE users.id = leads.user_id
  AND leads.landing_id = landings.id
  AND landings.funnel_id = funnels.id
Answer 2

Везде нужно писать LEFT JOIN. А чтобы убрать дубликаты, добавить DISTINCT

SELECT DISTINCT
  users.name,
  funnels.name
FROM
  users
  LEFT JOIN leads ON users.id = leads.user_id
  LEFT JOIN landings ON leads.landing_id = landings.id
  LEFT JOIN funnels ON landings.funnel_id = funnels.id
READ ALSO
vue-nuxt проект с несколькими index.html

vue-nuxt проект с несколькими index.html

Как организовать проект с несколькими точками входа? Чтоб собирались 2 сборки с общими компонентами

64
Как выполнить Node.js код на HTML странице?

Как выполнить Node.js код на HTML странице?

Я создаю веб-приложение на electron и nodejs

149