-1
私は私が好きな仕事になって少し問題を抱えているクエリを使用している場合、クエリは次のようになりますと:Where句の条件
SELECT
hf.file_path AS image,
hop.order_product_name AS product,
hop.order_product_price AS unit_flat_price,
.... <SHORTENED DOWN QUERY> ....
hc.currency_symbol AS currency,
ho.order_payment_method AS payment_method,
ho.order_created AS created
FROM
shop_order AS ho
LEFT JOIN
shop_order_product AS hop ON ho.order_id = hop.order_id
LEFT JOIN
shop_product AS hp ON hop.product_id = hp.product_id
LEFT JOIN
shop_file AS hf ON(
IF(
hp.product_parent_id > 0,
hp.product_parent_id,
hp.product_id
)
) = hf.file_ref_id
LEFT JOIN
shop_currency AS hc ON ho.order_currency_id = hc.currency_id
WHERE
ho.order_id = X AND(
hf.file_ordering = 0 OR hf.file_ordering = NULL
)
今私の問題は時々shop_fileテーブルが勝ったということです「Tはshop_file
表に試合を持っているし、私は参加している 『無視』するために私のクエリが必要ですが、試合がある場合、私はそれが私が
WHERE
ho.order_id = X (
IF(
hf.file_path = NULL,
'',
AND(
hf.file_ordering = 0 OR hf.file_ordering = NULL
)
)
)
を試してみた
WHERE
句で
AND
一部を適用する必要があります
で異なる値を試しました行が、何も私はまだ私も
WHERE
ho.order_id = X AND(
hf.file_id = NULL OR(
hf.file_ordering = 0 OR hf.file_ordering = NULL
)
)
を試みたが、それは単に私が私が私の望ましい結果を得る全体
AND(...)
一部を削除した場合、空の結果セットを(返す構文エラー
#1064 - You have an error in your .... syntax to use near '(IF(
を得た、助けました。
今、私は私が
WHERE
ho.order_id = X AND(
IF EXIST(SELECT file_path FROM ...)
の線に沿って何かを行うことができます知っているしかし、それは正しい結果を得るために、そのクエリにJOINS
他を追加するために私を必要とする(場合に画像がある)とI可能であれば、試しにJOINを追加する必要はありません。WHERE ... AND(IF_EXIST (SELECT
恐れも空の結果セットを返します。
は、あなたのWHERE句にこれを追加することで、これを試してみてください。 – Epodax
あなたは恐れていますか?ファイルがnullでない場合は、追加のconditionがwhereステートメントに追加されます。これはあなたが望むものなので、あなたが恐れていることを理解できませんか?条件が一致しない場合、hfテーブルから空のセットが返されます。単純です。私は最後のコメントを編集しました。そこにはNULL = NULLでなくてはなりません。 – michal
私はあなたの答えのコードを使ってクエリを実行し、空の結果セットを返しました。 "恐れ"はスピーチの方法です。 「それはうまくいかない」と言っている。 - このhttp://ell.stackexchange.com/questions/1195/when-can-you-use-im-afraid-thatのように – Epodax