имя группы запросов, но отображаются другие строки с ограничением

Таблица

+----+-----+------------+
|col1|col2 |col3        |
+----+-----+------------+
|A   |one  |1-jul-2013  |
|A   |two  |2-jul-2013  |
|A   |three|3-jul-2013  |
|A   |four |4-jul-2013  |
|A   |five |5-jul-2013  |
|B   |one  |1-jul-2013  |
|B   |two  |2-jul-2013  |
|B   |three|3-jul-2013  |
|B   |four |4-jul-2013  |
|B   |five |5-jul-2013  |
|B   |six  |6-jul-2013  |
|B   |seven|7-jul-2013  |
|B   |eight|8-jul-2013  |
|C   |one  |1-jul-2013  |
|C   |two  |2-jul-2013  |
|C   |three|3-jul-2013  |
|C   |four |4-jul-2013  |
|C   |five |5-jul-2013  |
|D   |one  |1-jul-2013  |
|D   |two  |2-jul-2013  |
|D   |three|3-jul-2013  |
|D   |four |4-jul-2013  |
|D   |five |5-jul-2013  |
+----+-----+------------+

Я хотел бы, чтобы дисплей выглядел так:

+-----+------+------------+------------+------------+
|Group|Name  |Date        |Name        |Date        |
+-----+------+------------+------------+------------+
| A   |one   |1-jul-2013  |two         |2-jul-2013  |
| B   |one   |1-jul-2013  |two         |2-jul-2013  |
| C   |one   |1-jul-2013  |two         |2-jul-2013  |
| D   |one   |1-jul-2013  |two         |2-jul-2013  |
+-----+------+------------+------------+------------+

0

Решение

Зачем тебе это?
Наличие одинаковых имен столбцов рядом друг с другом затрудняет определение того, какой вам нужен.
Насколько я знаю, невозможно иметь повторяющиеся имена столбцов.

0

Другие решения

Я предполагаю, что вам нужны все записи вместе для значения col1, а не конкретные столбцы, возвращаемые для каждого значения.

Если так, используя GROUP_CONCAT: —

SELECT col1, GROUP_CONCAT(CONCAT_WS('-', col2, col3) SEPARATOR ':')
FROM some_table
GROUP BY col1

Если вы хотите, чтобы это было немного легче обрабатывать, а ваши данные довольно просты, вы можете создать возвращенный конкатенированный столбец как JSON-кодированный массив (и поэтому можете просто использовать JSON_DECODE, чтобы превратить его в массив для обработки в PHP): —

$sql = "SELECT col1, CONCAT('{\"', CONCAT('{\\\"', GROUP_CONCAT(CONCAT_WS('\\\":\\\"', col2, col3) SEPARATOR '\\\",\\\"') ,'\\\"}')
FROM some_table
GROUP BY col1";

Если вы действительно хотите что-то в имеющемся формате (и игнорируете несколько столбцов с одним и тем же именем), то вы можете использовать и IF для проверки значения столбцов, чтобы решить, следует ли возвращать другое значение столбцов, и агрегатную функцию, чтобы просто принудительно установить одно значение должен быть возвращен для этого столбца: —

SELECT col1,
'one',
MAX(IF(col2='one', col3, NULL)),
'two',
MAX(IF(col2='two', col3, NULL)),
'three',
MAX(IF(col2='three', col3, NULL)),
'four',
MAX(IF(col2='four', col3, NULL)),
'five',
MAX(IF(col2='five', col3, NULL)),
'six',
MAX(IF(col2='six', col3, NULL)),
'seven',
MAX(IF(col2='seven', col3, NULL)),
'eight',
MAX(IF(col2='eight', col3, NULL))
FROM some_table
GROUP BY col1
0

По вопросам рекламы [email protected]