learning_new Ответов: 1

Объединить 3 таблицы (левое соединение)


У меня есть следующая таблица

таблица способная
userid    date       source
 1010      4/20/2020   updown
 1012      3/20/2020   leftdown


Настольный Тормоз
userid    completed_team   crossing   purchase
  1010       tokyo            mapping    yes
  1012       New York         clive      yes


Таблица Стоимости
userid   _send  _open  _click  completed_team   
  1010     20     12      8          Only
  1012     12     8       6          Double


Я пытаюсь получить таблицу, которая показывает что-то вроде этого

userid    date       source       send  open  click
1010      4/20/2020   updown       20     12      8
1012      3/20/2020   leftdown     12     8       6


Что я уже пробовал:

я использовал этот запрос, но он возвращает дубликаты, хотя дубликатов нет
SELECT Able.userid,Able.date,Able.ource,Brake.ompleted_team,cost.Send2,cost.Open2,cost.Click2
 from Brake
 left join Able on breake.userid= able.userid
 left join cost on able.userid= cost.userid

Tomas Takac

С данными, которые вы показываете, не должно быть никаких дубликатов. Попробуйте запустить его, чтобы увидеть, где он дублируется:

select a.userid, b.userid, c.userid
from Able a
left join Brake b on b.userid = a.userid
left join Cost c on c.userid = a.userid

ZurdoDev

Выберите все столбцы из всех таблиц, и тогда вы сможете увидеть, откуда берется дубликат.

1 Ответов

Рейтинг:
1

Eyssan

Вы должны использовать круглые скобки для разделения каждого соединения. Запрос будет выглядеть примерно так:

SELECT A.userid, A.date, A.source, B.completed_team, C.send, C.open, C.click
from (( B
left join A on B.userid = A.userid ) 
left join C on A.userid = C.userid);

Вывод вышеприведенного кода будет следующим:
userid	date	    source	 completed_team	send	open	click
1010	4/20/2020	updown	   Tokyo	     20	     12	     8
1012	3/20/2020	leftdown   New York	     12	     8	     6