2017-01-01 5 views
0

Я запрашивая БД MySQL для отчета в SSRS 2008, и у меня нет никаких проблем, используя следующие соединения двух различных запросов ...Сочетание 3 различных запросов

SELECT a.arrivalDate, a.order_item_id, b.roomType 
FROM 
(select order_item_id, meta_value as arrivalDate from `wp_woocommerce_order_itemmeta` WHERE `meta_key` LIKE 'Arrival Date') as a, 
(select order_item_id, meta_value as roomType from `wp_woocommerce_order_itemmeta` WHERE `meta_key` LIKE 'type-of-room') as b 
WHERE a.order_item_id = b.order_item_id 

... но когда я попробуйте добавить третий, он берет вопрос с моей ИНЕКЕ, но я поклялся, что закреплять учебный используется, чтобы сделать это таким образом:

SELECT a.arrivalDate, a.order_item_id, b.roomType, c.retreatDate 
FROM 
(select order_item_id, meta_value as arrivalDate from `wp_woocommerce_order_itemmeta` WHERE `meta_key` LIKE 'Arrival Date') as a, 
(select order_item_id, meta_value as roomType from `wp_woocommerce_order_itemmeta` WHERE `meta_key` LIKE 'type-of-room') as b, 
(select order_item_id, meta_value as retreatDate from `wp_woocommerce_order_itemmeta` WHERE `meta_key` LIKE 'retreat-date') as c, 
WHERE a.order_item_id = b.order_item_id AND a.order_item_id = c.order_item_id 

Любые советы?

+0

Кстати, это не так, как я бы это сделать - но что с тегом SSRS? – Strawberry

+0

Это для SSRS, и оно находится в построителе отчетов SQL Server. – Tim

+0

Я открыт для предложений, если вы знаете другой способ, который может быть более эффективным. – Tim

ответ

0

Неважно, понял! Я думал, что это то, что я пробовал изначально, но у меня, должно быть, была опечатка. Надеюсь, моя ошибка поможет другим спотыкаясь через это в будущем:

SELECT a.arrivalDate, a.order_item_id, b.roomType, c.retreatDate 
FROM 
(select order_item_id, meta_value as arrivalDate from `wp_woocommerce_order_itemmeta` WHERE `meta_key` LIKE 'Arrival Date') as a, 
(select order_item_id, meta_value as roomType from `wp_woocommerce_order_itemmeta` WHERE `meta_key` LIKE 'type-of-room') as b, 
(select order_item_id, meta_value as retreatDate from `wp_woocommerce_order_itemmeta` WHERE `meta_key` LIKE 'retreat-date') as c 
where a.order_item_id = b.order_item_id AND b.order_item_id = c.order_item_id 
0

я бы придерживаться ни с одним из традиционных решений - во-первых, (ИМО) легче читать. Во-вторых, как правило, быстрее ...

Query 1

SELECT order_item_id 
    , MAX(CASE WHEN meta_key = 'Arrival Date' THEN meta_value END) arrivalDate 
    , MAX(CASE WHEN meta_key = 'type-of-room' THEN meta_value END) roomType 
    , MAX(CASE WHEN meta_key = 'retreat-date' THEN meta_value END) retreatDate 
    FROM wp_woocommerce_order_itemmeta 
GROUP 
    BY order_item_id 

Запрос 2

SELECT DISTINCT x.order_item_id 
       , arrival.meta_value arrivalDate 
       , room.meta_value roomType 
       , date.meta_value retreatDate 
      FROM wp_woocommerce_order_itemmeta x 
      LEFT 
      JOIN wp_woocommerce_order_itemmeta arrival 
      ON arrival.order_item_id = x.order_item_id 
      AND arrival.meta_key = 'Arrival Date' 
      LEFT 
      JOIN wp_woocommerce_order_itemmeta room 
      ON room.order_item_id = x.order_item_id 
      AND room.meta_key = 'type-of-room' 
      LEFT 
      JOIN wp_woocommerce_order_itemmeta date 
      ON date.order_item_id = x.order_item_id; 
+0

Хорошо, спасибо за ваши предложения. Я ценю ваше время. – Tim