MySql: извлечение отдельных записей из трех разных столбцов одной таблицы - PullRequest
2 голосов
/ 29 августа 2011

У меня есть таблица с именем deals, в которой хранятся client_id1, client_id2, client_id3.

Эти идентификаторы соответствуют таблице clients с полями clientName и client_id.

Как создать строковый массив имен, идентификаторы которых есть в любом из трех столбцов табличных предложений.

1 Ответ

0 голосов
/ 29 августа 2011
SELECT GROUP_CONCAT(Client) FROM (
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id1 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id2 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id3 = clients.client_id)
GROUP BY Client

Объяснение:

Получить клиента из одной таблицы:

 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id1 = clients.client_id

Объединение получит их и из других таблиц

 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id1 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id2 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id3 = clients.client_id)

Сейчасчтобы получить Comma-Seperated-String, либо сделайте это на стороне клиента (php), либо позвольте серверу MySQL сделать это, используя GROUP_CONCAT :

SELECT GROUP_CONCAT(Client) FROM (
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id1 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id2 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id3 = clients.client_id)
GROUP BY Client
...