Задать вопрос
@Gruberhoff

Как правильно присоединить одну таблицу по нескольким условиям (создать новые поля со значениями)?

Мне нужно посредством join одной таблицы в выборку добавить 2 поля
- в поле font_category должны попасть только данные удовлетворяющие условию fa_name = category
- в поле font_variants должны попасть только данные удовлетворяющие условию fa_name = variants

fa_name - это столбец таблицы font_attribute
Моя проблема в том, что в поля font_category, и font_variants попадают одинаковые данные, будто проигнорировано условие при джойне fa_id = fav_attribute_id AND fa_name = "category"

Мой запрос выглядит так:
SELECT `font`.`font_id`, `font`.`font_family`, `font`.`font_source`, `font`.`font_status`, `font`.`font_default`, `font`.`font_asset_id`, `as`.`asset_date_changed` AS `font_date_changed`, `as`.`asset_rc_id` AS `font_rc_id`, `as`.`asset_uploaded_in_project_id` AS `font_uploaded_in_project_id`, `resource`.`rc_filename` AS `font_filename`, `fav`.*, `fao`.*, 
GROUP_CONCAT(fao.fao_value) AS `font_category`, 
GROUP_CONCAT(fao.fao_value) AS `font_variants` 
FROM `font`
 LEFT JOIN `asset` AS `as` ON font_asset_id = as.asset_id
 LEFT JOIN `resource` ON asset_rc_id = resource.rc_id
 LEFT JOIN `font_attribute_value` AS `fav` ON font_id = fav_font_id
 LEFT JOIN `font_attribute_option` AS `fao` ON fao_id = fav_attribute_option_id
 LEFT JOIN `font_attribute` AS `fa` ON fa_id = fav_attribute_id AND fa_name = "category"
 LEFT JOIN `font_attribute` AS `fa2` ON fa2.fa_id = fav_attribute_id AND fa2.fa_name = "variants" 
WHERE (font.font_id = 15) 
GROUP BY `font_id`


Create table, insert https://codeshare.io/cym3U

А результат получается таким (изображение):
https://drive.google.com/file/d/0B0C08G3acAeVOFd4Y...
А нужен такой:
https://drive.google.com/file/d/0B0C08G3acAeVSHY4d...

Связи таблиц (изображение):
https://drive.google.com/file/d/0B0C08G3acAeVXzJoe...

Буду благодарен тому кто пояснит, что я не так делаю.
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас в обоих GROUP_CONCAT одно и то же поле группируется.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы