私はすでに問題を提出していますが、例がなければ十分に明確ではなかったので、ここに表があります:
Users
id_user / key_user
1 / 123FDADA21312QD
2 / 994GFCS4595433D
Companies
id_company / key_company
1 / 3123123123
2 / 5435345454
Products
id_product / id_company_product / code_product
1 / 1 / iphone
2 / 1 / iBook
3 / 1 / macbook
Tyds
id_tyd / user_tyd / product_tyd
1 / 1 / 1 -- mean that the id_user = 1 made a line for the iphone
sold by the company 1
2 / 1 / 2 -- same : user 1 for the ibook of company 1
これが私のリクエストです:
SELECT
products.id_product,
users.id_user,
COALESCE(id_tyd, 'NONE') AS id_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 = '123FDADA21312QD'
AND companies.module_key_company = '3123123123'
AND products.cancelled_product >= 0
AND products.code_product = 'iphone'
それは戻ります
products.id_product = 1
users.id_user = 1
tyds.id_tyd = 1
完全。しかし、私がやりたいのは、tydsにこのユーザーのレコードがない場合でも、users.id_userを取得することです。好き :
SELECT
products.id_product,
users.id_user,
COALESCE(id_tyd, 'NONE') AS id_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 = '123FDADA21312QD'
AND companies.module_key_company = '3123123123'
AND products.cancelled_product >= 0
AND products.code_product = 'macbook'
入手したい:
- products.id_product = 3
- users.id_user = 1
- tyds.id_tyd = NONE
このステップでは、私が尋ねる製品が存在し、user_keyが存在することを確信しているからです。しかし、tydsに一致するレコードがあるかどうかはわかりません。それが、私がテストしたいことです。
もちろん、すべてのテーブルは単純化されており、より多くのデータが必要になりますが、これで問題が解決すると思います。
私の最初の動きは、WHERE条件をJOINマッチに入れることでしたが、なぜ、products.code_productを製品ジョイントに入れると、異なるid_productに対してもtydsレコードが得られるのかわかりません...
あなたの助けをどうもありがとう!