Мне нужно посредством 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...
Буду благодарен тому кто пояснит, что я не так делаю.