There may be a better way to write this, or do accomplish this kind of things, but this is at least a start. Feel free to comment about it here: http://www.magentocommerce.com/group/blog/action/viewpost/302/group/207/

Here is my select statement:

select     so.increment_id as 'order_no',

        /*sales_order_entity_id*/
        /*
        soi_sa.value as 'shipping_address_id', 
        */
        
        (    select xsoev.value 
            from sales_order_entity_varchar xsoev 
            inner join eav_attribute xea on xsoev.attribute_id = xea.attribute_id
            where     xsoev.entity_id = soi_sa.value and 
                    xea.attribute_code = 'firstname'
        ) as 'firstname',
        (    select xsoev.value 
            from sales_order_entity_varchar xsoev 
            inner join eav_attribute xea on xsoev.attribute_id = xea.attribute_id
            where     xsoev.entity_id = soi_sa.value and 
                    xea.attribute_code = 'lastname'
        ) as 'lastname',
        (    select xsoev.value 
            from sales_order_entity_varchar xsoev 
            inner join eav_attribute xea on xsoev.attribute_id = xea.attribute_id
            where     xsoev.entity_id = soi_sa.value and 
                    xea.attribute_code = 'company'
        ) as 'company',
        (    select xsoev.value 
            from sales_order_entity_varchar xsoev 
            inner join eav_attribute xea on xsoev.attribute_id = xea.attribute_id
            where     xsoev.entity_id = soi_sa.value and 
                    xea.attribute_code = 'street'
        ) as 'street',
        (    select xsoev.value 
            from sales_order_entity_varchar xsoev 
            inner join eav_attribute xea on xsoev.attribute_id = xea.attribute_id
            where     xsoev.entity_id = soi_sa.value and 
                    xea.attribute_code = 'region'
        ) as 'region',
        (    select xsoev.value 
            from sales_order_entity_varchar xsoev 
            inner join eav_attribute xea on xsoev.attribute_id = xea.attribute_id
            where     xsoev.entity_id = soi_sa.value and 
                    xea.attribute_code = 'postcode'
        ) as 'postcode',
        (    select xsoev.value 
            from sales_order_entity_varchar xsoev 
            inner join eav_attribute xea on xsoev.attribute_id = xea.attribute_id
            where     xsoev.entity_id = soi_sa.value and 
                    xea.attribute_code = 'country_id'
        ) as 'country_id',
        (    select xsoev.value 
            from sales_order_entity_varchar xsoev 
            inner join eav_attribute xea on xsoev.attribute_id = xea.attribute_id
            where     xsoev.entity_id = soi_sa.value and 
                    xea.attribute_code = 'telephone'
        ) as 'telephone'
from sales_order so
inner join sales_order_int soi_sa on so.entity_id = soi_sa.entity_id
inner join eav_attribute soi_sa_ea on soi_sa.attribute_id = soi_sa_ea.attribute_id and soi_sa_ea.attribute_code = 'shipping_address_id'
/*where so.increment_id = '100000004'*/

Here is the SQL for creating the view:


-- View "vi_sales_order_shipping" DDL

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `vi_sales_order_shipping` AS select `so`.`increment_id` AS `order_no`,(select `xsoev`.`value` AS `value` from (`sales_order_entity_varchar` `xsoev` join `eav_attribute` `xea` on((`xsoev`.`attribute_id` = `xea`.`attribute_id`))) where ((`xsoev`.`entity_id` = `soi_sa`.`value`) and (`xea`.`attribute_code` = _utf8'firstname'))) AS `firstname`,(select `xsoev`.`value` AS `value` from (`sales_order_entity_varchar` `xsoev` join `eav_attribute` `xea` on((`xsoev`.`attribute_id` = `xea`.`attribute_id`))) where ((`xsoev`.`entity_id` = `soi_sa`.`value`) and (`xea`.`attribute_code` = _utf8'lastname'))) AS `lastname`,(select `xsoev`.`value` AS `value` from (`sales_order_entity_varchar` `xsoev` join `eav_attribute` `xea` on((`xsoev`.`attribute_id` = `xea`.`attribute_id`))) where ((`xsoev`.`entity_id` = `soi_sa`.`value`) and (`xea`.`attribute_code` = _utf8'company'))) AS `company`,(select `xsoev`.`value` AS `value` from (`sales_order_entity_varchar` `xsoev` join `eav_attribute` `xea` on((`xsoev`.`attribute_id` = `xea`.`attribute_id`))) where ((`xsoev`.`entity_id` = `soi_sa`.`value`) and (`xea`.`attribute_code` = _utf8'street'))) AS `street`,(select `xsoev`.`value` AS `value` from (`sales_order_entity_varchar` `xsoev` join `eav_attribute` `xea` on((`xsoev`.`attribute_id` = `xea`.`attribute_id`))) where ((`xsoev`.`entity_id` = `soi_sa`.`value`) and (`xea`.`attribute_code` = _utf8'region'))) AS `region`,(select `xsoev`.`value` AS `value` from (`sales_order_entity_varchar` `xsoev` join `eav_attribute` `xea` on((`xsoev`.`attribute_id` = `xea`.`attribute_id`))) where ((`xsoev`.`entity_id` = `soi_sa`.`value`) and (`xea`.`attribute_code` = _utf8'postcode'))) AS `postcode`,(select `xsoev`.`value` AS `value` from (`sales_order_entity_varchar` `xsoev` join `eav_attribute` `xea` on((`xsoev`.`attribute_id` = `xea`.`attribute_id`))) where ((`xsoev`.`entity_id` = `soi_sa`.`value`) and (`xea`.`attribute_code` = _utf8'country_id'))) AS `country_id`,(select `xsoev`.`value` AS `value` from (`sales_order_entity_varchar` `xsoev` join `eav_attribute` `xea` on((`xsoev`.`attribute_id` = `xea`.`attribute_id`))) where ((`xsoev`.`entity_id` = `soi_sa`.`value`) and (`xea`.`attribute_code` = _utf8'telephone'))) AS `telephone` from ((`sales_order` `so` join `sales_order_int` `soi_sa` on((`so`.`entity_id` = `soi_sa`.`entity_id`))) join `eav_attribute` `soi_sa_ea` on(((`soi_sa`.`attribute_id` = `soi_sa_ea`.`attribute_id`) and (`soi_sa_ea`.`attribute_code` = _utf8'shipping_address_id'))));

After you have the view created then you can treat the view similar to how you treat a table.

select *
from vi_sales_order_shipping

or if you want to reference a single order

select *
from vi_sales_order_shipping
where order_no = '100000004'