我有3個表涉及SQL查詢我想弄清楚如何編寫。爲匹配和非匹配創建SQL查詢
itemmeta
order_item_id meta_key meta_value
------------------- ------------------ -------------------
1 _subscription_test 0
1 _subscription_more 0
1 _product_id 100
2 _subscription_test 0
2 _subscription_more 0
2 _product_id 100
3 _product_id 100
ORDER_ITEMS
order_item_id order_id
------------------- ------------------
1 200
2 201
3 202
postmeta *
order_id meta_key
------------------ ------------------
200 _original_order
查詢應d Ø如下:
查找itemmeta.order_item_id
Where itemmeta.meta_key LIKE '_subscription%' OR itemmeta.meta_key LIKE '_recurring%'
- >使用唯一的值從這裏
採取這些itemmeta.order_item_id值和匹配,以order_items.order_item_id
- > return order_items.order_id把那些order_items.order_id和比賽進行到postmeta.post_id其中postmeta.meta_key沒有爲「_original_order」
匹配(扔出去,其中的元鍵存在任何order_ids)那些那些結果,參考回到itemmeta.order_item_id並找到那些其中itemmeta.meta_key = '_product_id'
- >返回itemmeta.meta_value
最終結果:
order_items.order_id, order_itemmeta.meta_value (_product_id)
所以上面的表格中
將返回1行:
order_id => 201
meta_value => 100
我不是執行該查詢所需的合併和底片十分肯定。希望有人能夠提供任何幫助!
您是否嘗試寫這樣的查詢? –
您正在使用哪些DBMS?甲骨文? Postgres的? –