Задавайте вопросы, мы ответим
Вы не зашли.
Имеется две таблицы
- tst_008_02_group - группы
- tst_008_03_stud - студенты.
Вопрос.
Как сделать сцепку в формате "institut fak 1.group 1 (name stud 1 m 20, name stud 2 g 21, name stud 3 m 22)" см. скрин?
Отредактированно sql157 (05.04.2017 13:45:01)
Неактивен
Неактивен
vasya написал:
https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
Прошу прощения, но всё равно не понимаю...
Запрос 1
Отредактированно sql157 (04.04.2017 12:39:17)
Неактивен
зачем left join? могут быть группы без студентов?
GROUP_CONCAT(concat_ws(' ',t02.name_stud, t02.pol_stud, t02.vozrast_stud) ORDER BY `t02`.`name_stud` ASC SEPARATOR ' , ')
Неактивен
Сделал так
Запрос 3
vasya написал:
зачем left join?
Не помню... Плохо ориентируюсь пока в этом вопросе...
Когда-то долго не срабатывал запрос.. Потом случайно сработал с left join..
До полноценного изучения теории по join пока не добрался...
vasya написал:
могут быть группы без студентов?
Нет. Точно нет.
Если у вас есть возможность, не могли бы вы подсказать как довести до уровня..
id_group scepka 1
1 institut fak 1.group 1 (name stud 1 m 20, name stud 2 g 21, name stud 3 m 22)
?
Слово "institut" предполагается использовать как текстовая вставка в запросе, а не как данные из поля таблицы.
Неактивен
Неактивен
vasya написал:
SELECT `t01`.`id_group`,
concat('institut ', fak_name, ' ', group_name, ' (',
GROUP_CONCAT(
concat_ws
(' ',t02.name_stud, t02.pol_stud, t02.vozrast_stud)
ORDER BY `t02`.`name_stud`
ASC SEPARATOR ' , '), ')'
)
AS`scepk_name_stud`
FROM `tst_008_02_group` `t01`
LEFT JOIN `tst_008_03_stud` `t02` ON `t01`.`id_group` = `t02`.`id_group`
GROUP BY `t01`.`id_group`;
про join см http://sqlinfo.ru/forum/viewtopic.php?id=3210
Всё понял.. Всё работает...
Спасибо...
Вопрос
Можно ли сделать, чтобы выборка из ТС "institut fak 1.group 1 (name stud 1 m 20, name stud 2 g 21, name stud 3 m 22)"
в таблице "tst_008_02_group" формировалась в отдельно вычисляемом поле?
Причём чтобы "tst_008_02_group" была именно таблица с возможностью добавлять и удалять записи
В общем, что-то типа Ексель..
Может бестолковый вопрос.... пока осваиваю... поэтому прошу извинить...
Неактивен
Генерируемые колонки
или с помощью триггера вычисляйте
Неактивен
vasya написал:
Вопрос
Можно ли сделать, чтобы в запросе из сообщения #6 поле id_group было проиндексировано?
Для наглядности прилагаю результат запроса
id_group |scepk_name_stud |
---------|-------------------------------------------------------------------------------------|
1 |institut fak 1.group 1 (name stud 1 m 20 , name stud 2 g 21 , name stud 3 m 22) |
2 |institut fak 2.group 2 (name stud 4 g 23 , name stud 5 m 24 , name stud 6 g 25) |
3 |institut fak 3.group 3 (name stud 7 m 26 , name stud 8 g 27 , name stud 9 m 28) |
4 |institut fak 1.group 4 (name stud 10 g 29 , name stud 11 m 30 , name stud 12 g 31) |
5 |institut fak 2.group 5 (name stud 13 m 32 , name stud 14 g 33 , name stud 15 m 34) |
6 |institut fak 3.group 6 (name stud 16 g 35 , name stud 17 m 36 , name stud 18 g 37) |
7 |institut fak 1.group 7 (name stud 19 m 38 , name stud 20 g 39 , name stud 21 m 40) |
8 |institut fak 2.group 8 (name stud 22 g 41 , name stud 23 m 42 , name stud 24 g 43) |
9 |institut fak 3.group 9 (name stud 25 m 44 , name stud 26 g 45 , name stud 27 m 46) |
Неактивен
что вы подразумеваете под индексом в запросе?
индекс может быть у таблицы
Неактивен
vasya написал:
что вы подразумеваете под индексом в запросе?
индекс может быть у таблицы
Понял....
Плаваю в терминах...
В моём случае Таблицы MYSql подключаю к Аксес.
Таблицы связаны отношением 1:М через формы Аксес.
MYSql таблицы связать пока не пробовал...
Так вот...
Если ID в таблицах не проиндексированы, то в Аксес таблицы открываются с жуткими тормозами..
После индексации (см. пример), если в последней таблице ( в случае ТС это таблица "tst_008_03_stud" ) 13 полей 1,0 млн записей, то в Аксес всё "летает".
Пример.
Индексация id в последней таблице
Неактивен