2016-07-01 3 views
0

私は車のモデルに関連するいくつかの項目を持つテーブルがあります。これらの項目にはいくつかのカテゴリがあります。 sc_productsテーブルに格納されている各アイテムについて、車に関連するすべてのカテゴリカテゴリのすべてを選択する必要があります。ここでまたはオペレータがより多くの行を返した後、mysql

は私のクエリです:

SELECT 
t15_catalogue_line. 
T15_GROUP, 
sc_products.product_code, 
sc_products.unic, sc_products.name_ru, UPPER(TRIM(sc_products.brief_description_ru)) AS brief_description_ru, sc_products.suupplier, price.Price, sc_group_discounts.`action`, sc_group_discounts.procent, sc_products.productID, price.in_stock, price.supplier, t10_item.T10_ITEM, t10_item.unic, t10_item.T10_DESC, t10_item.T10_IMG, t10_item.T10_ITEM_GROUP, t10_item.T10_FIELD1, t10_item.T10_FIELD2, t10_item.T10_FIELD3, t10_item.T10_FIELD4, t10_item.T10_FIELD5, t10_item.T10_FIELD6, t10_item.T10_FIELD7, t10_item.T10_FIELD8, t10_item.T10_FIELD9, t10_item.T10_FIELD10, t10_item.T10_FIELD11, t14_item_fields.T14_ITEM_GROUP, t14_item_fields.T14_FIELD, t14_item_fields.T14_NAME, t14_item_fields.T14_UNIT, t14_item_fields.T14_SEARCH 
FROM 
sc_products 
LEFT OUTER JOIN t15_catalogue_line ON (sc_products.unic = t15_catalogue_line.unic) 
LEFT OUTER JOIN price ON (sc_products.unic = price.unic) AND (sc_products.suupplier = price.postavchik) 
LEFT OUTER JOIN sc_group_discounts ON (sc_products.item_group = sc_group_discounts.item_group) 
LEFT OUTER JOIN t10_item ON (sc_products.unic = t10_item.unic and sc_products.CatText=t10_item.CatText and sc_products.brief_description_ru=t10_item.brand) 
LEFT OUTER JOIN t14_item_fields ON (t10_item.T10_ITEM_GROUP = t14_item_fields.T14_ITEM_GROUP) 
WHERE 
sc_products.CatText = 'bracke mechanism' or 
sc_products.CatText='bracke montage ' or 
sc_products.CatText='hydraulic repair ' AND 
t15_catalogue_line.T15_CARTYPE = '30442' AND 
t15_catalogue_line.T15_GROUP = '666' and 
sc_products.unic is not null and 
sc_products. unic!='' 
GROUP BY sc_products.product_code,sc_products.brief_description_ru, sc_products.suupplier 
ORDER BY ISNULL(price.price),price.price ASC 

クエリは、これらのcaegories内のすべてのアイテムを返し、t15_catalogラインがソリューション

+0

'()'を使用してクエリの 'と'と 'または'の句をグループ化すると、あなたの質問は分かりやすくなります。あなたの質問を編集してください。 –

+1

@OllieJones括弧は彼の問題を解決するかもしれません。 –

+0

申し訳ありませんがどこに配置する必要があります私は何かを誤解されるかもしれない。 – user3237076

答えて

1

私は非常に複数のAND周り行方不明括弧()が問題であると思われます。

クエリは、今まさにしないので、テーブルt15_catalogラインは、ソリューション

あなたのグループ化ロジック何ができるか、クエリに関与しないものをcaegories内のすべてのアイテムを返し、それらが自動車に関連していませんあなたは以下のことを説明します:

WHERE (sc_products.CatText = 'bracke mechanism' or sc_products.CatText='bracke montage ' or sc_products.CatText='hydraulic repair ') AND t15_catalogue_line.T15_CARTYPE = '30442' AND t15_catalogue_line.T15_GROUP = '666' and sc_products.unic is not null and sc_products. unic!='' GROUP BY sc_products.product_code,sc_products.brief_description_ru, sc_products.suupplier ORDER BY ISNULL(price.price),price.price ASC 
1
何ができるか、クエリに関与しないテーブルので、それらがautoに関連していません

この論理:

a OR b OR c AND dは、a OR b OR (c AND d)と同じであり、あなたが望むものと思われる(a OR b OR c) AND dに相当しません。あなたが周りに括弧を追加したり、このようにブロックする必要が

WHERE 
(
    sc_products.CatText = 'bracke mechanism' 
OR sc_products.CatText = 'bracke montage ' 
OR sc_products.CatText = 'hydraulic repair ' 
) 
AND t15_catalogue_line.T15_CARTYPE = '30442' 
AND t15_catalogue_line.T15_GROUP = '666' 
AND sc_products.unic is not null 
AND sc_products. unic!='' 
0

希望の結果を得るためには、おそらくparanthesisを使いたいと思うかもしれません。方法について

SELECT 
    t15_catalogue_line. 
    T15_GROUP, 
    sc_products.product_code, 
    sc_products.unic, sc_products.name_ru, 
    UPPER(TRIM (sc_products.brief_description_ru)) AS brief_description_ru, 
    sc_products.suupplier, price.Price, sc_group_discounts.`action`, 
    sc_group_discounts.procent, sc_products.productID, 
    price.in_stock, price.supplier, t10_item.T10_ITEM, t10_item.unic, 
    t10_item.T10_DESC, t10_item.T10_IMG, t10_item.T10_ITEM_GROUP, 
    t10_item.T10_FIELD1, t10_item.T10_FIELD2, t10_item.T10_FIELD3, 
    t10_item.T10_FIELD4, t10_item.T10_FIELD5, t10_item.T10_FIELD6, 
    t10_item.T10_FIELD7, t10_item.T10_FIELD8, t10_item.T10_FIELD9, 
    t10_item.T10_FIELD10, t10_item.T10_FIELD11, 
    t14_item_fields.T14_ITEM_GROUP, t14_item_fields.T14_FIELD, 
    t14_item_fields.T14_NAME, t14_item_fields.T14_UNIT, 
    t14_item_fields.T14_SEARCH 
FROM 
    sc_products 
LEFT OUTER JOIN t15_catalogue_line ON 
    (sc_products.unic = t15_catalogue_line.unic) 
LEFT OUTER JOIN price ON 
    (sc_products.unic = price.unic) 
    AND (sc_products.suupplier = price.postavchik) 
LEFT OUTER JOIN sc_group_discounts ON 
    (sc_products.item_group = sc_group_discounts.item_group) 
LEFT OUTER JOIN t10_item ON 
    (sc_products.unic = t10_item.unic and 
    sc_products.CatText=t10_item.CatText and 
    sc_products.brief_description_ru=t10_item.brand) 
LEFT OUTER JOIN t14_item_fields ON 
    (t10_item.T10_ITEM_GROUP = t14_item_fields.T14_ITEM_GROUP) 
WHERE 
    (
     sc_products.CatText = 'bracke mechanism' 
    or 
     sc_products.CatText='bracke montage ' 
    or 
     sc_products.CatText='hydraulic repair ' 
    ) 
    AND t15_catalogue_line.T15_CARTYPE = '30442' 
    AND t15_catalogue_line.T15_GROUP = '666' 
    and sc_products.unic is not null 
    and sc_products. unic!='' 

GROUP BY 
    sc_products.product_code,sc_products.brief_description_ru, 
    sc_products.suupplier ORDER BY ISNULL(price.price), 
    price.price ASC 
関連する問題