Помогите с составлением запроса

Статус
В этой теме нельзя размещать новые ответы.

Matinier

Постоялец
Регистрация
5 Окт 2009
Сообщения
65
Реакции
4
Здравствуйте!
Есть таблица с записями вида:

1 | Петя | яблоко
2 | Петя | груша
3 | Петя | апельсин
4 | Вася | яблоко
5 | Вася | арбуз

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

Петя | яблоко, груша, апельсин
Вася | яблоко, арбуз
 
Код:
SELECT name, GROUP_CONCAT(fruit)
FROM fruit
GROUP BY name
 
Благодарю. Сделал так, но добавил пробелы после запятых и сделал только не повторяющиеся фрукты в списке:

Код:
SELECT name, GROUP_CONCAT( DISTINCT fruit SEPARATOR ', ' )
FROM fruit
GROUP BY name
 
Есть таблица с записями вида:
1 | Петя | яблоко
2 | Петя | груша
3 | Петя | апельсин
4 | Вася | яблоко
5 | Вася | арбуз
Структура таблицы не совсем оптимальная. Дело в том что здесь для каждого фрукта дублируется Имя человека
1 | Петя | яблоко
2 | Петя | груша
3 | Петя | апельсин
При таком подходе размер БД будет заметно больше оптимального. Эту БД целесообразно было бы реализовать так:

таблица1:
id| name |
1 | Петя |
2 | Вася |

таблица2:
id|nameID| Fruit
1 | 1 | яблоко
2 | 1 | груша
3 | 1 | апельсин
4 | 2 | яблоко
5 | 3 | арбуз
И тогда запрос:
SELECT T1.*,T2.* FROM таблица1 T1 LEFT JOIN таблица2 T2 ON T1.name=T2.nameID WHERE.......

Принцип таков: если некоторая сущность (у тебя было имя) может иметь несколько признаков (у тебя были фрукты), то для признаков отводится отдельная таблица, которая имеет некий идентификатор сущности (id). Присоединяются все признаки по LEFT JOIN. Результат лучше привести к нужному тебе виду уже при обработке в скрипте или программе.

Как видишь нет необходимости дублировать по несколько раз информацию с длинным именем, достаточно ID (как правило хватает обычного int который равен 4 байта). А представь, если бы в твоей таблице был 4-й столбец, в котором был некий текст(например биография этого человека), сколько бы лишнего места ушло из-за необходимости его многократно дублировать только из-за того, что у васи есть и апельсин и груша.
 
Благодарю за совет, однако на стуктуру описанной в топике таблицы (как и на БД в целом) повлиять возможности нет.
Меня интересовал запрос для выборки данных - корректный ответ я получил.
Тему можно закрывать.
 
Люди подскажите вот имея доступ к MySQL как можно залить в него php файл?
 
Залить файл в базу?
нет, просто есть сайт к которому есть достук к БД, мне нужно на этот сайт залить пхп файл в корень сайта, реально ли это сделать?
это при учёте того что регистр_глобал офф
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху