0

ここに私のテーブルがあります:

認証キー:

id    /    keys    / user 
1     /    12345   /   1

*製品 * :

id    / company    /   name
1     /  1         /   iphone
2     /  2         /   iphone

企業:

id    / name       /   mkey
1     / myComp     /   54321

そして、ここに私のSQLリクエストがあります:

SELECT 
    products.id_product AS id_product, 
    auth_keys.keys AS vkey,
    auth_keys.user AS user_id
FROM 
    auth_keys
JOIN 
    products
LEFT JOIN 
    companies ON products.company = companies.id
WHERE 
    products.name_product = "iphone"
    AND companies.mkey = "54321" 
HAVING 
    vkey = "none"

私は物事をしたい:

  • 2つの異なる会社に同じ名前の製品を持たせることができるので、最初にTHENid_productsを取得することで取得します。この部分はOKです。id_companyname_product

  • 私はuser_key価値が欲しいのですがWHERE keys = "12345" OR "NONE"、それが私の問題です。keys = "12345" の場合はすべて機能しますが、keys = "none/nothing" の場合は何も得られません...

一致できなくても、最初の結果 id_product を取得したいのですがuser_key...

ご協力いただきありがとうございます !

4

2 に答える 2

0

これを試して:


    SELECT 
    products.id_product AS id_product, 
    auth_keys.keys AS vkey,
    auth_keys.user AS user_id
    FROM auth_keys
    JOIN products
    LEFT JOIN companies ON products.company = companies.id
    WHERE 
    products.name_product = "iphone"
    AND (companies.mkey = "54321"or vkey = "none")

集計結果をフィルタリングするために「group by」句で使用される「having」は必要ありません。

于 2013-06-27T15:40:25.383 に答える
0

テーブルがどのように結合するかを理解するのに本当に苦労しています。キーが12345またはNONEでなければならないという条件なしで、auth_keysに参加したいようです。ただし、両方に一致する場合、何が必要かわかりません。

でも早速トライ

SELECT products.id_product AS id_product, 
    auth_keys.keys AS vkey,
    auth_keys.user AS user_id
FROM products
LEFT OUTER JOIN companies
ON products.company = companies.id
AND companies.mkey = "54321"
LEFT OUTER JOIN auth_keys
ON auth_keys.keys IN ('12345', 'NONE')
WHERE products.name_product = "iphone"
于 2013-06-27T16:30:38.640 に答える