MySQL объединяет имена людей, как в списке рассылки - PullRequest
0 голосов
/ 20 мая 2018

У меня есть таблица Домохозяйства, которая является связью один-ко-многим с таблицей Люди.Я хочу создать адресную строку для таких имен, как «HisFirst & HerFirst ItsLast» или что-то вроде «Joe & Jane Doe».Это послужит первой строкой метки адреса.Мой запрос в настоящее время возвращает что-то вроде «Джо Доу и Джейн Доу».Итак, вы видите, что фамилия является избыточной.Мой запрос ниже.Как я могу изменить, чтобы получить желаемый результат?Я попробовал CASE заявления на основе пола и IF / ELSE / THEN.Я также пытался вложить оба типа.Наконец, я попытался объединить 2 оператора select, но продолжал возвращать несколько строк - поэтому MySQL выдал исключение.

SELECT 
  GROUP_CONCAT(People.FName, ' ', People.LName ORDER BY Gender DESC SEPARATOR ' & ') AS `HouseholdName`
FROM Households 
LEFT JOIN People
  ON Households.HouseholdID = People.HouseholdID 
GROUP BY
  Households.HouseholdID

Пол равен 2 для мужчин и 1 для женщин.

Если только 1 человекпринадлежит «домашнему хозяйству» и возвращает имя одного человека как «Джейн Доу», так что эта часть работает нормально.

1 Ответ

0 голосов
/ 20 мая 2018

Объединение не требуется, поскольку People уже имеет HouseholdID.

SELECT 
  CONCAT(GROUP_CONCAT(People.FName ORDER BY Gender DESC SEPARATOR ' & '), ' ', People.LName)
  AS `HouseholdName`
FROM People
GROUP BY
  People.HouseholdID, People.LName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...