1

これが私の質問ですそして私は説明します:

SELECT 
    tyds.product_tyd,
    tyds.user_tyd,
    COALESCE(action_tyd, 'NONE') AS action_tyd 
FROM tyds
INNER JOIN users
    ON tyds.user_tyd = users.id_user
INNER JOIN products
    ON tyds.product_tyd = products.id_product
INNER JOIN companies
    ON products.id_company_product = companies.id_company 
WHERE users.key_user = '14967d378a580cdf020350f4eb626f16'
AND companies.module_key_company = 'daL/RqzZcfqc.'
AND products.cancelled_product >= 0
AND products.code_product = 'app_1'

users.key_userusers.id_userも教えてくださいtyds.user_tydcompanies.module_key_companyくださいproducts.company_id_product

テーブルでaを許可し、productsこれを使用してテーブルに記録しますID_productcode_productcompany_idID_producttyds

私が欲しいのは、このユーザーがTYDS指定された製品のテーブルにレコードを作成してから、彼id_userや他のいくつかのものを取得するかどうかを知ることです。TYDS検出するレコードがある場合に機能しますが、もちろん、テーブルにレコードや対応がない場合は機能しません。

しかし、私が知りたいのは、テーブルusers.id_userにレコードがない場合でもEVENを取得できるかどうかです。TYDs

したがって、実際には、users.key_user他の3つの条件がFALSEを返した場合でも、結果を取得することになります。

先週似たようなことを聞​​いたのは知っていますが、前例の解決策でもわかりません。

あなたの助けをどうもありがとう!

4

3 に答える 3

1

あなたの説明から、関連するレコードがなくても、すべてのユーザーとそれに対応する tyds レコードのリストが必要なように思えます。私はこれがあなたが望むものだと信じています。

SELECT
    users.id_user,
    tyds.product_tyd,
    tyds.user_tyd,
    COALESCE(action_tyd, 'NONE') AS action_tyd 
FROM users
LEFT JOIN tyds
    ON tyds.user_tyd = users.id_user
LEFT JOIN products
    ON tyds.product_tyd = products.id_product
    AND products.cancelled_product >= 0
    AND products.code_product = 'app_1'
LEFT JOIN companies
    ON products.id_company_product = companies.id_company
    AND companies.module_key_company = 'daL/RqzZcfqc.'
WHERE users.key_user = '14967d378a580cdf020350f4eb626f16'
于 2012-11-19T18:28:29.787 に答える
0

私はそのようなものをリンクします:

SELECT B_user, tyds.product_tyd 
FROM tyds
INNER JOIN products ON tyds.`product_tyd` = products.id_product
AND products.`cancelled_product` >= 0
AND products.code_product = 'app_1'
INNER JOIN companies ON products.`id_company_product` = companies.`id_company`
AND companies.`module_key_company` = 'daL/RqzZcfqc.'
WHERE tyds.`user_tyd` IN 
(SELECT id_user AS B_user FROM users WHERE key_user = '14967d378a580cdf020350f4eb626f16') 

そして、products.code_product が間違っていても B_user を取得するなど...

于 2012-11-20T09:18:22.803 に答える
0

これらの条件を結合句のON条件に移動します。

SELECT 
    tyds.product_tyd,
    tyds.user_tyd,
    COALESCE(action_tyd, 'NONE') AS action_tyd 
FROM tyds
INNER JOIN users
    ON tyds.user_tyd = users.id_user
INNER JOIN products
    ON tyds.product_tyd = products.id_product
    AND products.cancelled_product >= 0 -- moved from where clause to here
    AND products.code_product = 'app_1'-- moved from where clause to here
INNER JOIN companies
    ON products.id_company_product = companies.id_company 
    AND companies.module_key_company = 'daL/RqzZcfqc.' -- moved from where clause to here
WHERE users.key_user = '14967d378a580cdf020350f4eb626f16'

結合条件には、「id の一致」以上のものを含めることができます。句に特別な条件を入れることにより、ON返される行を希望する方法で結合するものだけに制限しますが、そうでない場合は空の左結合を取得します (同じ「id」を持つ他の行がある場合でも)マッチ)。

于 2012-11-19T18:15:50.433 に答える