Таблица счетов php / html, использующая данные mysql, объединяющие все продажи человека в одну строку - PullRequest
1 голос
/ 06 мая 2011

У меня есть таблица mysql, которая содержит информацию о счете для моих участников.

таблица счетов

memberid | item | amount
------------------------
mem1     | book | 100.00
mem1     | lamp | 50.00
mem2     | desk | 200.00
mem1     | pen  | 1.00

Я хотел бы объединить все строки определенного memberid в одну строку (либо во временной таблице MySQL, либо даже просто сбросить ее в HTML-таблицу для просмотра)

пример - новая таблица счетов

<code>memberid | item1 | amount1 | item2 | amount2 | item3 | amount3 
---------------------------------------------------------------
mem1     | book  | 100.00  | lamp  | 50.00   | pen   | 1.00
mem2     | desk  | 200.00  | NULL  | NULL    | NULL  | NULL

Мне понадобится эта новая таблица для добавления столбца нового элемента и суммы динамически , поскольку число раз, когда участник покупает элемент, неизвестно. скажем, mem1 покупает другой элемент, к этой новой таблице нужно добавить еще 2 столбца ( item4, amount4 ).

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

Сложно поворачивать таблицу в MySQL, но у вас есть встроенная функция сводки: GROUP_CONCAT
Вот мое предложение.

Идея состоит в том, чтобы построить таблицу в html, используя теги для стартовой таблицы и т. Д.

Вот как выглядит таблица в html-источнике.

<table border="1">
<tr>
<td>A1</td> <td>B1</td>
</tr>
<tr>
<td>A2</td> <td>B2</td>
</tr>
</table> 

и вот искусство ascii вывода

+--------+--------+
| A1     | B1     |
+--------+--------+
| A2     | B2     |
+--------+--------+

Вы можете построить это с помощью группы concat

SELECT 
  concat('<tr><td>',s.member_id,'</td>'
         ,group_concat(s.itempair SEPARATOR '')
         ,'</tr>') as row
  FROM (
    SELECT member_id, concat('<td>',item,'</td><td>',amount,'</td>') as itempair
    FROM invoice ORDER BY member_id, item ) s
  GROUP BY s.member_id;

Теперь вы можете просто начать таблицу, повторив тег <table border = "1">,
Повторяю все row s из выбранного
и, наконец, повторение тега </table>.

Для получения дополнительной информации о group_concat
см .: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

Удачи с кодом php.

0 голосов
/ 06 мая 2011

Создайте таблицу с внешним ключом для пользователя, внешним ключом для продукта и внешним ключом для счета. Создайте отдельные таблицы для продуктов, пользователей и счетов. Затем используйте объединение, чтобы объединить всю эту информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...