#mysql
#mysql
Вопрос:
Я новичок в базе данных, поэтому, пожалуйста, простите меня, если это обсуждалось миллион раз раньше, я не нахожу решения для того, что я пытаюсь сделать.
У меня есть таблица, которую мы назовем ‘product_attributes’, где хранится ряд специфических атрибутов для всех продуктов. В этой таблице ‘attribute_id’ сообщает мне, какой тип информации хранится в строке, ‘store_id’ сообщает мне, на каком веб-сайте отображается информация, ‘entity_id’ сообщает мне, о каком продукте содержится информация, а ‘value’ — это информация о продукте. Формат:
value_id entity_type_id attribute_id store_id entity_id value
1221 4 57 0 306 Detailed Description of Product
1222 4 58 0 306 Quick Overview of Product
1223 4 68 0 306 metakeywords
1224 4 89 0 306 metadescription
1225 4 93 0 306 Other Stuff
1226 4 57 0 307 Detailed Description of Product
1227 4 58 0 307 Quick Overview of Product
1228 4 68 0 307 metakeywords
1229 4 89 0 307 metadescription
1230 4 93 0 307 Other Stuff
Мне нужно выполнить запрос, чтобы извлечь все элементы из столбца ‘value’ с ‘attribute_id=57’ в столбец с именем ‘Long Description’, а все элементы из того же столбца с ‘attribute_id = 58’ в другой столбец с именем ‘Short Description’. Я могу получить значения по отдельности достаточно просто с:
SELECT product_attributes.value FROM product_attributes WHERE attribute_id=57
или
SELECT product_attributes.value FROM product_attributes WHERE attribute_id=58
Но мне нужен отдельный столбец для каждого такого:
Long Description Short Description
Detailed Info of 'entity_id 306' Overview of 'entity_id 306'
Detailed Info of 'entity_id 307' Overview of 'entity_id 307'
Комментарии:
1. Вам нужно будет выполнить объединение в вашем запросе.
Ответ №1:
SELECT pr1.value as LongDescription, pr2.value as ShortDescription
FROM product_attributes pr1
JOIN product_attributes as pr2
WHERE pr1.attribute_id=57 AND pr2.attribute_id=58
Ответ №2:
select a.value as 'long desc', b.value as 'short desc'
from
(SELECT entity_id, product_attributes.value FROM product_attributes WHERE attribute_id=57 ) a,
(SELECT entity_id, product_attributes.value FROM product_attributes WHERE attribute_id=58 ) b
where a.entity_id = b.entity_id
Ответ №3:
select (SELECT a.value FROM product_attributes as a where a.attribute_id=57) as LongDescription,(SELECT b.value FROM product_attributes as b where b.attribute_id=58) as ShortDescription from product_attributes
Это может помочь U..