У меня есть следующие настройки схемы:Группировка - нужно отобразить на одной строке
Имя таблицы: thing
Column | type
----------------------------
id | auto increment int
ident | int
cost1 | int
cost2 | int
cost3 | int
Имя таблицы: thing_usage
column | type
---------------------------------
id | auto increment int
thing | int - FK to thing.id
usage_type | int
data | int
duration | int
с некоторыми данными:
thing
:
id | ident | cost1 | cost2 | cost3
------------------------------------------------
1 | 1234 | 1 | 2 | 3
2 | 5678 | 0 | 0 | 0
thing_usage
:
id | thing | usage_type | data | duration
--------------------------------------------------------
1 | 1 | 1 | 5555 | 0
2 | 1 | 1 | 3 | 0
3 | 1 | 2 | 0 | 123
4 | 1 | 3 | 232 | 12
Все здесь ->SQLFiddle
То, что я хотел бы выход, если в одной строке для каждого thing
как это:
thing | cost1 | usage1 | cost2 | usage2 | cost3 | usage3
------------------------------------------------------------------------
1 | 1 | 5558 | 2 | 00:02:03 | 3 | 232
2 | 0 | 0 | 0 | 0 | 0 | 0
cost1
использует usage_type
из, cost2
использует usage_type
из 2
и так далее ...... и cost1
и cost3
использования data
для его использования и cost2
преобразует duration
от нескольких секунд до чч: мм: сс для использования - использование должно быть просуммирован
На момент я должен создать 2 запроса, и поэтому это в коде - поэтому я все петли thing
, а затем получаю их использование и вывод соответственно
Есть ли способ получить желаемый результат из одного запроса - возможно, используя какой-нибудь подзапрос?
Это называется «поворот» или «сводная таблица». Попробуйте найти поисковый запрос «msql pivot example». – DwB
@ dwb thanks - я посмотрю ... я действительно пытался назвать это чем-то! теперь я знаю – ManseUK
Я бы дал ответ, но каждый раз, когда мне это нужно, я всегда должен делать это. – DwB