Я пробовал найти что-то подобное, но безрезультатно ...Как сконденсировать столбцы, подобные этому?
Речь идет о системе таблиц для системы управления клиентами. В частности, мне нужно создать историю записей для каждого клиента.
Итак, у меня есть таблица 'клиентов' с колоннами customers.customer_ID
, customers.lastname
, customers.firstname
, customers.postal_code
, customers.city
и customers.street
;
и другой стол «ноты» с колоннами notes.note_ID
, notes.customer_ID
, notes.subject
, notes.description
и notes.entered_on
Теперь мне нужно создать третий поиск таблицы, которая конденсируется большая часть приведенной выше информации. Он имеет таблицы search.contact_ID, search.name, search.address и search.history. Это должно выглядеть следующим образом:
contacts:
contact_ID | lastname | firstname | ...
------------+-----------+-----------+-----
1 | Doe | John | ...
2 | Dane | Jane | ...
note:
note_ID | contact_ID | subject | description | entered_on
--------+---------------+-----------------------+-----------------------+----------------
1 | 1 | call received | John Doe called us to | 2014-05-03
| | | ask for an offer |
2 | 1 | offer made | We called John Doe to | 2014-06-03
| | | submit our offer |
3 | 2 | advertisement call | We called Jane Dane to| 2014-06-03
| | | inform her of our |
| | | latest offer |
4 | 1 | offer accepted | John Doe called to | 2014-08-03
| | | accept our offer |
search:
contact_ID | name | address | history
------------+---------------+---------------------------------+-------------------
1 | Doe, John | 55 Main Street, 12345 Oldtown | 'On 2014-08-03 offer accepted: John Doe accepted our offer.
| | | On 2014-06-03 offer made: We called John Doe to submit our offer.
| | | On 2014-05-03 call received: John Doe called us to ask for an offer.'
2 | Dane, Jane | 111 Wall Street, 67890 Newtown | 'On 2014-06-03 advertisement call: We called Jane Dane to submit our offer.'
В то время как я могу справиться с большей частью остального, я понятия не имею, как генерировать информацию предыстории. Моя идея была следующей:
WHILE
customers.customer_ID = note.customer_ID
AND
note.entered_on = GREATEST(note.entered_on)
DO
SET customers.note_history = CONCAT_WS(' | ', CONCAT_WS(': ',note.subject,note.description), customers.note_history);
Но это не обязательно хронологически. Также как я могу преобразовать это в утверждение, совместимое с SELECT INTO
, используемым для создания остальной части таблицы?
Звучит так, будто вы хотите что-то сделать в MySQL, что должно быть сделано в самом приложении. – NDM