Таблицы соединения Firebird SQL

В настоящее время у меня есть такие таблицы:

Стол Клиент

ID      Name
01      Angel
02      Charlie

Таблица Input1

Name     Value
Charlie  5
Angel    7
Charlie  10
Angel    3

Таблица Input2

Name     Value
Charlie  10
Angel    5
Charlie  15
Angel    25

Как получить такой результат

Name     Input1     Input2
Angel    10         30
Charlie  15         25

Что вы пробовали так далеко?

Bálint Budavölgyi 02.05.2018 10:27

В любом случае используйте столбец ID для внешнего ключа, а не Name!

BigBother 02.05.2018 14:45

@ BálintBudavölgyi Мне очень жаль, что я новичок в SQL. Я пробовал что-то вроде SELECT Customer.Name, Input1.Value как Input1, Input2.Value как Input2 FROM Customer LEFT JOIN Input1 ON Customer.Name = Input1.Name LEFT JOIN Input2 ON Customer.Name = Input2.Name GROUP BY Name Но он дал мне ошибка.

Moch Fahmy Ainur Rofiq 02.05.2018 16:40

@BigBother Ускоряет ли запрос, если мы используем столбец ID для внешнего ключа?

Moch Fahmy Ainur Rofiq 02.05.2018 16:45

Более быстрое соединение и меньшие индексы, но главное - ремонтопригодность (например, имя может измениться, если вы его неправильно написали)

BigBother 02.05.2018 20:49

@MochFahmyAinurRofiq Я забыл ответить вам в моем последнем комментарии, так что это просто для того, чтобы вас уведомить ...

BigBother 02.05.2018 23:30
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
6
3 845
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это:

SELECT 
    c.Name, 
    i1."Value" value1, 
    i2."Value" value2
FROM 
    Customer c LEFT JOIN 
    (SELECT Name, SUM("Value") "Value" from input1 group by Name) i1
    ON c.Name = i1.Name LEFT JOIN 
    (SELECT Name, SUM("Value") "Value" from input2 group by Name) i2
    ON c.Name = i2.Name

ДЕМО

http://sqlfiddle.com/#!9/204220/2

Value - зарезервированное слово в Firebird. Пожалуйста, подумайте об изменении имени столбца или поместите его в двойные кавычки (если вы сделаете последнее, обратите внимание, что оно будет чувствительно к регистру)
BigBother 02.05.2018 14:57

@BigBother Да, конечно, это всего лишь пример. В моих приложениях в таблицах используется столбец с заглавной буквы и названия на моем родном языке, поэтому в качестве имени столбца не используется зарезервированное слово. :)

Moch Fahmy Ainur Rofiq 02.05.2018 16:53

Другие вопросы по теме