私は、woocommerce_order_itemmeta
テーブルのすべてのデータを取得して整理するwoocommerceのSQLクエリをまとめようとしています。Null値の行を返すSQLサブクエリ
私は重力フォームにハッシュ値をつかむために使用される同様のクエリに基づいて一緒に次の石畳:
SELECT order_item_id AS entryId,
(
SELECT meta_value
FROM wp_woocommerce_order_itemmeta
WHERE meta_key = 'Name'
AND order_item_id = entryId LIMIT 1
) AS 'Full Name',
(
SELECT meta_value
FROM wp_woocommerce_order_itemmeta
WHERE meta_key = 'Email'
AND order_item_id = entryId LIMIT 1
) AS 'User Email',
(
SELECT meta_value
FROM wp_woocommerce_order_itemmeta
WHERE meta_key = 'Address'
AND order_item_id = entryId LIMIT 1
) AS 'User Address'
FROM wp_woocommerce_order_itemmeta
WHERE meta_value IS NOT NULL
GROUP BY entryId
ORDER BY entryId
そして、問題なく動作しているようです。私はMySQLを介してそれを実行し、私は必要な結果を得るが、私はまた、NULL
値以外の行数を取得します。
前述のクエリを使用してNULL
の値だけの行をフィルタリングする方法はありますか?
where句でnullをチェックしていますが、これはすでにすべてを結合した後です。 meta_value IS NOT NULLをそれぞれの結合に追加すると、それを修正する必要があります。 mysqlにもっと賢い方法があるかどうかはわかりません。 –
'where ...とentryIdがnullでない'を追加します。また、nullの 'entryId'を持つ複数の行を持つことはできません。サブクエリでは 'order_item_id = null'では厳密には不可能ですが、一部のシステムではそのルールを曲げます。 – shawnt00
アドバイスありがとうございます。私は "meta_valueがnullではない"を各サブクエリに追加しようとしましたが、正常に実行されましたが、まだ多くのNULL行が返されています。私は名前、電子メール、アドレスなどがなく、_product_id、_line_subtotal、_line_totalなどの値しか含んでいないentryID行があるという事実と関連していることを発見しています。 _original_order_idでそれらをグループ化することができます。それは各注文の共通性のようです。 – gffwebdev