У меня есть столовые домохозяйства, которые являются отношениями друг к другу с таблицей People. Я хочу создать адресную строку для имен, таких как "HisFirst & HerFirst ItsLast", или что-то вроде "Joe & Jane Doe". Это будет первой линией адресной метки. Мой запрос в настоящее время возвращает что-то вроде "Joe Doe & 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 для женщин.
Если только один человек принадлежит к "домохозяйству", он возвращает имя одного человека как "Джейн Доу", так что часть работает нормально.
Вам действительно не нужно присоединяться, так как у 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;
familyID
иLName
. Если у них нет имени, группировка будет производиться по их ID семьи.