SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.04.2008 11:49:27

lez77
Участник
Зарегистрирован: 01.04.2008
Сообщений: 2

помогите составить запрос

допустим есть такая таблица:

id | value
-----------
2 | hi
2 | hello
2 | temp
3 | php
3 | css

я хочу сделать выборку всех value где id например равен 2,
но получить результат не в виде массива,
а в виде одной строки (ну или массива из одного элемента :

hihellotemp

т.е чтобы все найденные значения сложились вместе.

может здесь как-то использовать CONCAT? и вообще возможно ли это сделать за 1 запрос?
как обработать уже полученные данные я знаю. но мне хочется по возможности получить уже в удобном формате.

заранее благодарен.

Неактивен

 

#2 01.04.2008 16:25:05

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: помогите составить запрос

mysql> SELECT GROUP_CONCAT(value) FROM tbl WHERE id = 2 GROUP BY id;
+---------------------+
| GROUP_CONCAT(value) |
+---------------------+
| hi,hello,temp       |
+---------------------+
1 row in set (0.00 sec)

По умолчанию разделителем является запятая:

mysql> SELECT GROUP_CONCAT(value) FROM tbl WHERE id = 2 GROUP BY id;
+---------------------+
| GROUP_CONCAT(value) |
+---------------------+
| hi,hello,temp       |
+---------------------+
1 row in set (0.00 sec)

Неактивен

 

#3 03.04.2008 00:08:50

lez77
Участник
Зарегистрирован: 01.04.2008
Сообщений: 2

Re: помогите составить запрос

спасибоsmile

Неактивен

 

#4 03.04.2008 01:24:13

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: помогите составить запрос

Пардон. Сейчас посмотрел и увидел, что неправильно составил предыдущее сообщение.

Вам ведь нужно было слепить слова (чтоб совсем без разделителя). Это делается так:

mysql> SELECT GROUP_CONCAT(value SEPARATOR '') FROM tbl WHERE id = 2 GROUP BY id;
+----------------------------------+
| GROUP_CONCAT(value SEPARATOR '') |
+----------------------------------+
| hihellotemp                      |
+----------------------------------+
1 row in set (0.01 sec)

Разделитель можно и любой другой использовать. А чтобы столбец назывался по-человечески, используйте ключевое слово AS:

mysql> SELECT GROUP_CONCAT(value SEPARATOR '') AS text FROM tbl WHERE id = 2 GROUP BY id;
+-------------+
| text        |
+-------------+
| hihellotemp |
+-------------+
1 row in set (0.00 sec)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson