Итак, у меня есть запрос в NaviCat, у него есть часть, которая выглядит следующим образом:
case
when base.table = 1 then Table1.Name
when base.table = 2 then Table2.Name
when base.table = 3 then Table3.Name
when base.table = 4 then Table4.Name
end as Name
Поскольку в Базовой таблице есть Идентификационный номер, но он не содержит Имен человека. Он подключен правильно и работает. Однако в некоторых случаях он утраивает некоторые строки.
Я могу получить ответ, похожий на этот
Identifier Amount Name
12 1000 Smith, Suzy
12 1000 Smith, John
12 1000 Smith, John & Smith, Suzy
Я бы хотел, чтобы он возвращал только самую длинную запись (поскольку все имена являются либо мужем, женой, либо мужем & Жена), так как все суммы одинаковы, и я думаю, что это потому, что я оставляю присоединение базовой таблицы к таблице 1, таблице 2 и т. Д. c. Но как я могу это исправить? Есть ли функция для возврата только самого длинного имени?
Я смотрю на несколько левых соединений, похожих на это.
Left join server.table1 as Table1 on Base.Identifier = Table1.Identifier AND Base.Date = Table1.Date
каждая таблица 1-таблица 4 имеет одинаковый код соединения.