LEFT JOIN с запросом 3 TABLES несколько раз возвращает одну и ту же строку - PullRequest
0 голосов
/ 12 апреля 2020

С помощью этого запроса

select 
    google_ads.date,
    oh_db.customer_name,
    linkedin.cost as linkedin_cost,
    google_ads.cost as google_ads_cost
from `oh-data-pipeline`.`staging_benjamin`.`oh_customers` as oh_db

left join `oh-data-pipeline`.`staging_benjamin`.`linkedin` as linkedin
    on oh_db.linkedin_account_id = linkedin.account_id

left join `oh-data-pipeline`.`staging_benjamin`.`google_ads` as google_ads
    on oh_db.google_ads_id = google_ads.customer_id

order by google_ads.date desc

я получаю следующий результат, который невозможен, потому что у меня должна быть только 1 уникальная запись, а не 76 одинаковых.

Что я делаю не так?

enter image description here

Я запрашиваю из этой базы данных: 1 строка на клиента в день enter image description here

и эта база данных: 1 строка на клиента в день. enter image description here

Примечание: различно, я не получаю правильное значение «стоимости».

1 Ответ

2 голосов
/ 13 апреля 2020

Вы разворачиваетесь, делая JOIN только на account_id. Каждая строка для каждого account_id объединяется со всеми одинаковыми для каждой даты и каждой таблицы.

Попробуйте добавить AND table_1.date = table_2.date в предложения ON ....

Если это не сработает, я могу помочь вам переписать ваш запрос позже.

Чтобы узнать немного больше о непреднамеренном разглаживании ваших результатов, благодаря тому, как вы присоединились к своим таблицам, посмотрите это объяснение от Looker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...