У меня есть этот запрос:
SELECT
s.id AS id,
s.item_id,
i.type_id AS type_id,
i.description AS description,
i.owner_id,
s.buyer_id,
i.receivedate,
i.statusdate,
i.baseprice,
i.salepercentage,
i.status_id,
s.posteddate,
s.closingdate,
s.discountdate,
s.discountrate,
t.description AS type_description,
st.description AS status_description
FROM
sale s
LEFT JOIN item i ON s.item_id=i.id
LEFT JOIN TYPE t ON i.type_id=t.id
LEFT JOIN STATUS st ON i.status_id=st.id
WHERE s.flag_id != 2
GROUP BY s.id
ORDER BY s.closingdate;
Работает нормально, но в качестве последнего шага мне нужно получить объединенные поля имени и фамилии из еще одной таблицы с именем customer
для , оба поля i.owner_id
и s.buyer_id
.
Я подошел ближе, используя следующее:
SELECT
s.id AS id,
s.item_id,
i.type_id AS type_id,
i.description AS description,
i.owner_id,
s.buyer_id,
i.receivedate,
i.statusdate,
i.baseprice,
i.salepercentage,
i.status_id,
s.posteddate,
s.closingdate,
s.discountdate,
s.discountrate,
t.description AS type_description,
st.description AS status_description,
GROUP_CONCAT(CONCAT(c.firstname, ' ', c.lastname) ORDER BY i.owner_id, s.buyer_id)
FROM
sale s
LEFT JOIN item i ON s.item_id=i.id
LEFT JOIN TYPE t ON i.type_id=t.id
LEFT JOIN STATUS st ON i.status_id=st.id
LEFT JOIN CUSTOMER c ON i.owner_id=c.id OR s.buyer_id=c.id
WHERE s.flag_id != 2
GROUP BY s.id
ORDER BY s.closingdate;
Когда я проверяю его, используя записи в таблице клиентов, как показано ниже:
id=3, firstname="John", lastname="Doe"
id=10, firstname="Jane", lastname="Do"
И предметы из таблицы продажи имеют:
owner_id=3, buyer_id=10
owner_id=10, buyer_id=3
Столбец GROUP_CONCAT()
возвращает
Jane Do,John Doe
Jane Do,John Doe
У меня нет возможности узнать, кто является владельцем, а кто - покупателем, только с позиции, разделенной запятыми, поскольку результаты, на которые я надеялся, были
John Doe,Jane Do
Jane Do,John Doe
для продажи предметов.
Можно ли гарантировать, что возвращенный набор результатов будет иметь список GROUP_CONCAT()
, возвращенный в контролируемом заказе (т. Е. Первый клиент будет связан с owner_id
, а второй клиент - с buyer_id
)?