Помощь с SQL запросом
Есть 3 таблицы:
clients
ID Name
1 Client 2
senders
ID Name
1 Sender 1
2 Sender 2
client_sender
ID Client Sender
1 1 1
2 1 2
В третьей таблице одному клиенту может принадлежать несколько SENDERов. Задача по id клиента получить названия SENDERов. Как это сделать с помощью нескольких запросов я знаю, но хочется сделать красиво.
Вот то что есть сейчас
clients
ID Name
1 Client 2
senders
ID Name
1 Sender 1
2 Sender 2
client_sender
ID Client Sender
1 1 1
2 1 2
В третьей таблице одному клиенту может принадлежать несколько SENDERов. Задача по id клиента получить названия SENDERов. Как это сделать с помощью нескольких запросов я знаю, но хочется сделать красиво.
Вот то что есть сейчас
$classKey = 'ordersSender';
$c->leftJoin('ordersClientSender', 'Client', '`Client`.`client` = `'.$this->classKey.'`.`id`');
$c->select(array(
'sender' => 'Client.sender'
));
Комментарии: 1
Решил проблему, может кому пригодится. Все это работает под extends modObjectGetListProcessor, в методе prepareQueryBeforeCount
$c->leftJoin('ordersClientSender', 'Client');
$c->leftJoin('ordersSender', 'Sender', '`Client`.`sender` = `Sender`.`id`');
$c->select($this->modx->getSelectColumns($this->classKey, $this->classKey));;
$c->select(array(
'senders' => 'GROUP_CONCAT(Sender.name)'
));
$c->groupby($this->classKey.'.name');
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.