2016-07-01 4 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 주위에 괄호가 누락 ()이 문제라고 생각한다.

쿼리는 그 caegories에있는 모든 항목을 반환하고는

귀하의 그룹 로직이 지금 정확히 무엇을 수행하는 솔루션이 될 수 있는지 질의에 참여하지 않는 자동 그래서 테이블 t15_catalog 라인 관련이없는 당신이 설명하는 것은 다음과 같습니다.

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
될 수 있는지 질의에 참여하지 않는 자동차 관련되지 않은 : 여기

내 쿼리입니다

이 논리 :

a OR b OR c AND da 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 
관련 문제