2017-01-01 2 views
0

Ich bin für einen Bericht in SSRS 2008 eine MySQL db abfragt, und ich habe kein Problem, die folgenden verbinden zwei unterschiedliche Abfragen mit ...Kombination 3 verschiedene Abfragen

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 

... aber wenn ich versuchen, einen dritten hinzufügen, es nimmt Problem mit meinem WHERE-Klausel, aber ich schwor coulda habe ich es auf diese Weise zu tun:

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 

Irgendwelche Tipps?

+0

Übrigens, es ist nicht, wie ich es tun würde - aber was ist mit dem SSRS-Tag? – Strawberry

+0

Es ist für SSRS, und es ist in der SQL Server-Berichtsgenerator – Tim

+0

Ich bin offen für Vorschläge, wenn Sie eine andere Möglichkeit kennen, die effizienter sein könnte. – Tim

Antwort

0

Macht nichts, hab es! Ich dachte, das ist, was ich ursprünglich versucht habe, aber ich muss einen Tippfehler haben. Hoffentlich wird mein Fehler andere über diese Hilfe in die Zukunft stolpern:

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

ich mit einem der herkömmlichen Lösungen bleiben würde - die erste ist (IMO) leichter zu lesen. Die zweite ist in der Regel schneller ...

Abfrage 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 

Abfrage 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

Gut, danke für Ihre Vorschläge. Ich schätze deine Zeit. – Tim