SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 07.07.2011 16:14:33

babun31
Участник
Зарегистрирован: 07.07.2011
Сообщений: 4

Повторяющие значения

Подскажите плз, у меня есть таблица в ней есть 2 поля: number_vagona, naznachenie
Мне нужно чтобы, например,
number_vagona       naznachenie
1111                             Воронеж
2222                            Воронеж
3333                            Белгород

После запроса выводилось
Воронеж, 1111, 2222
Белгород, 3333
Заранее спс

Неактивен

 

#2 07.07.2011 18:06:15

DJK
Завсегдатай
Зарегистрирован: 09.08.2009
Сообщений: 32

Re: Повторяющие значения

SELECT `naznachenie`, GROUP_CONCAT(`number_vagona` SEPARATOR ", ") FROM `table` GROUP BY `naznachenie`
или так
SELECT CONCAT(`naznachenie`,",", GROUP_CONCAT(`number_vagona` SEPARATOR ", ")) FROM `table` GROUP BY `naznachenie`


Но самое главное не забываем про размер group_concat_max_len по умолчанию он 1024.
меняется он SET [GLOBAL | SESSION] group_concat_max_len = val;

Отредактированно DJK (07.07.2011 18:07:58)

Неактивен

 

#3 08.07.2011 09:48:43

babun31
Участник
Зарегистрирован: 07.07.2011
Сообщений: 4

Re: Повторяющие значения

А что это у меня появляется вместо number_vagona [BLOB - 990Байт]

Неактивен

 

#4 08.07.2011 10:45:56

babun31
Участник
Зарегистрирован: 07.07.2011
Сообщений: 4

Re: Повторяющие значения

Подскажите плз, все хорошо вроде, но вот проблема выводит не корректно, т.е. у меня вообще очень большой запрос (по моим меркам)
SELECT * FROM disla LEFT JOIN status ON disla.number_vagona = status.number_vagona WHERE status.character = ".$slovo_status." and disla.date <= ".$slovo_date. " and disla.date = (SELECT MAX(date) FROM disla WHERE disla.number_vagona = status.number_vagona) ORDER BY disla.naznachenie, disla.operation

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

naznachenie    number_vagon     date            time           и т.д.
Воронеж             232323           2011-01-01    10:00:00   
                          123111            2011-02-01    01:10:11
                          545463           2011-05-07     22:12:03

Белгород          222323             2010-03-10   10:15:10


Ну и т.д.

Неактивен

 

#5 09.07.2011 12:53:22

DJK
Завсегдатай
Зарегистрирован: 09.08.2009
Сообщений: 32

Re: Повторяющие значения

Лучше бы пример SQL дампа.
Не совсем понимаю почему нельзя обойтись без LEFT JOIN.
Поподробнее бы про эти таблицы и их примерное содержимое не помешало бы.

Неактивен

 

#6 10.07.2011 11:31:30

stopkran
Участник
Зарегистрирован: 10.07.2011
Сообщений: 1

Re: Повторяющие значения

babun31 написал:

А что это у меня появляется вместо number_vagona [BLOB - 990Байт]

Вероятно, вы отлаживаете выполнение запроса через phpmyadmin. Пробуйте через свой скрипт.

babun31 написал:

... а мне необходимо чтобы вагон был на каждой строчке отедельно

Это уже не mysql, а php (особенности вывода на страницу). При разборе запроса проверяйте критерий (равен город предыдущему или нет).

Отредактированно stopkran (10.07.2011 11:38:31)

Неактивен

 

#7 21.07.2011 09:15:41

babun31
Участник
Зарегистрирован: 07.07.2011
Сообщений: 4

Re: Повторяющие значения

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

Неактивен

 

Board footer

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