This solution isn't bound to a strict model or a resource model and can be used to retrieve an option label of an attribute that is assigned to whatever entity type:
// In your case $entityType should be `catalog_product` $attribute = Mage::getModel('eav/config')->getAttribute($entityType, $attributeCode); echo $attribute->getSource()->getOptionText($optionId);
FYI, $attribute->getSource() returns an instance of Mage_Eav_Model_Entity_Attribute_Source_Table which has the following methods:
Array ( [0] => getAllOptions [1] => getOptionText [2] => addValueSortToCollection [3] => getFlatColums [4] => getFlatIndexes [5] => getFlatUpdateSelect [6] => setAttribute [7] => getAttribute [8] => getOptionId [9] => getIndexOptionText )
I should note that Method 1 from accepted answer throws an SQL error in Magento v1.9.4 (I'm not sure about the other versions):
Column 'option_id' in where clause is ambiguous
The reason could be found in the below generated SQL query:
SELECT `main_table`.*, `tdv`.`value` AS `default_value`, `tsv`.`value` AS `store_default_value`, IF ( tsv.value_id > 0, tsv.VALUE, tdv.VALUE ) AS `value` FROM `eav_attribute_option` AS `main_table` INNER JOIN `eav_attribute_option_value` AS `tdv` ON tdv.option_id = main_table.option_id LEFT JOIN `eav_attribute_option_value` AS `tsv` ON tsv.option_id = main_table.option_id AND tsv.store_id = 0 WHERE ( tdv.store_id = 0 ) # This is the culprit AND ( `option_id` IN ( 9999 ) )