2017-11-29 1 views
2
SELECT *, 
    (SELECT name FROM oc_filter_group_description fgd 
    WHERE f.filter_group_id = fgd.filter_group_id AND 
      fgd.language_id = '1') AS `group` 
FROM oc_filter f 
LEFT JOIN oc_filter_description fd 
    ON (f.filter_id = fd.filter_id) 
WHERE fd.language_id = '1' AND fd.name LIKE '%FAB%' 
+0

いくつかの入力データを貼り付けることができますし、あなたの期待は何ですか。 –

答えて

0

あなたのクエリを書き直すことができ、むしろ加入:

SELECT f.*, fgd.name, fd.* 
FROM oc_filter f 
LEFT JOIN oc_filter_group_description fgd 
    ON f.filter_group_id = fgd.filter_group_id AND 
     fgd.language_id = '1' 
LEFT JOIN oc_filter_description fd 
    ON f.filter_id = fd.filter_id 
WHERE 
    fd.language_id = '1' AND 
    fd.name LIKE '%FAB%' AND 
    -- fgd.name = 'some name' 

をこのアプローチはWHERE句に直接アクセスname列になります。 、

SELECT *, 
    (SELECT name FROM oc_filter_group_description fgd 
    WHERE f.filter_group_id = fgd.filter_group_id AND 
      fgd.language_id = '1') AS `group` 
FROM oc_filter f 
LEFT JOIN oc_filter_description fd 
    ON (f.filter_id = fd.filter_id) 
WHERE fd.language_id = '1' AND fd.name LIKE '%FAB%' 
HAVING `group` = 'some name'; 

GROUP BYは表示されませんMySQLでHAVING句を、:あなたはあなたの現在のアプローチを維持したい場合は、MySQLは、SELECT句でエイリアスのアイテムを直接使用することができHAVING句を介してオプションを提供していますオーバーロードされたWHERE節のような種類の関数があり、エイリアスを使用することができます。

+0

、ありがとうございました。 –

+0

@JagrutiMetaliya全く問題ありません。私は途中で携帯電話で答えました:-) –

関連する問題