ВЫБЕРИТЕ два поля из одного столбца на основе значения во втором столбце

#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..