Перенос значений базы данных mysql из пары столбцов в строки записей - PullRequest
1 голос
/ 27 октября 2010

Проще описать, показывая упрощенный вид существующей структуры данных и желаемого результата ...


НАСТОЯЩЕЕ ...

Element       Response           ElementType    ElementNumber

EntryVal.1    1234.56            EntryVal       1
EntryDes.1    'Current Value'    EntryDes       1

EntryVal.2    4321.0             EntryVal       2
EntryDes.2    'Another Value'    EntryDes       2

EntryVal.3    6543.21            EntryVal       3
EntryDes.3    'Final Value'      EntryDes       3

Второстепенный ...

Name           Value

Current Value  1234.56
Another Value  4321.0
Final Value    6543.21

(разделить столбец элемента на столбцы ElementType и ElementNumber в надежде это может помочь)

Пробовал различные подвыборы, но не нашел секрет.

Может сделать цикл в PHP, но надеюсь, что есть более элегантный подход к единственному одиночному запросу MySQL.

Существуют и другие столбцы, например, местоположение, поэтому стараемся держать его в чистоте.

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Вот как бы я это сделал:

SELECT des.Response AS Name, val.Response AS Value
FROM MyTable AS des JOIN MyTable AS val USING (ElementNumber)
WHERE des.ElementType = 'EntryDes' AND val.ElementType = 'EntryVal';
1 голос
/ 27 октября 2010

Использование:

  SELECT MAX(CASE WHEN t.elementtype = 'EntryDes' THEN t.response END) AS Name,
         MAX(CASE WHEN t.elementtype = 'EntryVal' THEN t.response END) AS Value,
    FROM YOUR_TABLE t
GROUP BY t.elementnumber

Возможно, вы захотите сохранить elementnumber в виде столбца, если вам необходимо обеспечить порядок.

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