Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

требуется помощь составить запрос.

41K
03 июня 2010 года
fe120
10 / / 09.12.2008
Доброго всем времечка.

Суть в следующем, есть 3 таблицы, в MySQL:
В первой таблица описания стиля.

 
Код:
mysql> describe styles;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type                | Null | Key | Default | Extra          |
+-------+---------------------+------+-----+---------+----------------+
| id    | tinyint(3) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255)        | NO   | UNI | NULL    |                |
| color | varchar(7)          | NO   | UNI | NULL    |                |
+-------+---------------------+------+-----+---------+----------------+

2 таблица хранит id композиции и id стиля к которому она пренадлежитэ

 
Код:
mysql> describe compositionInStyles;
+---------------+---------------------+------+-----+---------+-------+
| Field         | Type                | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| styleId       | tinyint(3) unsigned | NO   | MUL | NULL    |       |
| compositionId | int(10) unsigned    | NO   | MUL | NULL    |       |
+---------------+---------------------+------+-----+---------+-------+


Ну и 3 хранит основную инфу о музыкальной композиции, а главное ее id
Код:
mysql> describe musicComposition;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| author      | varchar(512)     | NO   | MUL | NULL    |                |
| name        | varchar(512)     | NO   | MUL | NULL    |                |
| album       | varchar(512)     | YES  | MUL | NULL    |                |
| yearOfAlbum | year(4)          | YES  |     | NULL    |                |
| path        | mediumtext       | NO   |     | NULL    |                |
| mixIn       | int(10) unsigned | NO   |     | NULL    |                |
| mixOut      | int(10) unsigned | NO   |     | NULL    |                |
| voxIn       | int(10) unsigned | NO   |     | NULL    |                |
| voxOut      | int(10) unsigned | NO   |     | NULL    |                |
| md5         | char(32)         | NO   | UNI | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+

и есть запрос к базе:


Код:
mysql> select musicComposition.id,musicComposition.name, color,styles.name
from
      compositionInStyles,musicComposition,styles
where
      musicComposition.id = compositionInStyles.compositionId
      AND
      compositionInStyles.styleId = styles.id ORDER BY musicComposition.id;

| 960 | She Can Get It                                                  | #23297b | Зарубежный Рок                      |
| 961 | Gimme A Sign                                                    | #8b0714 | Хип-Хоп                             |
| 961 | Gimme A Sign                                                    | #c7e0e0 | Зарубежный Поп                      |
| 961 | Gimme A Sign                                                    | #23297b | Зарубежный Рок                      |
| 962 | Great Escape                                                    | #8b0714 | Хип-Хоп                             |
| 962 | Great Escape                                                    | #c7e0e0 | Зарубежный Поп                      |
| 962 | Great Escape                                                    | #23297b | Зарубежный Рок                      |
| 963 | Let It Rock [Filthy Dukes Remix]                                | #23297b | Зарубежный Рок                      |
| 963 | Let It Rock [Filthy Dukes Remix]                                | #8b0714 | Хип-Хоп                             |
| 963 | Let It Rock [Filthy Dukes Remix]                                | #c7e0e0 | Зарубежный Поп                      |
+-----+-----------------------------------------------------------------+---------+-------------------------------------+
2200 rows in set (0.04 sec)

не трудно заметить что я получаю вообщемто лишнюю инфу, хотелось бы получить что-то подобное:
 
Код:
| 962 | Great Escape                                                    | #8b0714 #c7e0e0 #23297b | Хип-Хоп  Зарубежный Поп  Зарубежный Рок     |
| 963 | Let It Rock [Filthy Dukes Remix]                                | #23297b #8b0714 #c7e0e0 | Зарубежный Рок Хип-Хоп  Зарубежный Поп |                    
+-----+--------------------------------------------

загвозда в том что не могу придумать подходящий запрос.
хотелось бы реализовать все одним запросом и без встраевыемых функций\процедур.

Заранее спасибо откликнувшимся.
41K
03 июня 2010 года
fe120
10 / / 09.12.2008



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

в общем-то неплохой пример.попробую поразбираться

10K
08 июня 2010 года
ksogor
12 / / 19.05.2005
Если количество стилей может меняться (то есть простым if'ом обойтись нельзя), то одним запросом это сделать невозможно, потому что нужен цикл. Нужного результата можно добиться с помощью дополнительной процедуры, если он очень необходим.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог