Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Or运算符返回的行数多于预期的行数_Mysql - Fatal编程技术网

Mysql Or运算符返回的行数多于预期的行数

Mysql Or运算符返回的行数多于预期的行数,mysql,Mysql,我有一张表格,里面有一些与车型相关的项目。这些项目可以有几个类别。我必须为存储在sc_products表中的每个项目选择与汽车相关的所有产品以及所有给定类别 我的问题是: 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_desc

我有一张表格,里面有一些与车型相关的项目。这些项目可以有几个类别。我必须为存储在sc_products表中的每个项目选择与汽车相关的所有产品以及所有给定类别

我的问题是:

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
Query返回这些目录中的所有项目,它们与auto无关,因此表
t15\u catalog
line不参与查询可能的解决方案此逻辑:

a或b或c和d
相当于
a或b或(c和d)
,而不是
(a或b或c)和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!='' 
这一逻辑:

a或b或c和d
相当于
a或b或(c和d)
,而不是
(a或b或c)和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!='' 

我高度怀疑多重
之间缺少括号
()
是您的问题

查询返回这些目录中的所有项目,它们与自动无关,因此表t15_目录行不参与查询,可能的解决方案是什么

您的分组逻辑现在与您描述的完全一致,我认为您的意图如下:

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

我高度怀疑多重
之间缺少括号
()
是您的问题

查询返回这些目录中的所有项目,它们与自动无关,因此表t15_目录行不参与查询,可能的解决方案是什么

您的分组逻辑现在与您描述的完全一致,我认为您的意图如下:

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

您可能希望在查询中使用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

您可能希望在查询中使用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

如果您在查询中使用括号
()
以及
子句进行分组,您的问题将更容易理解。请回答您的问题。@OllieJones括号甚至可以解决他的问题。对不起,括号没有放在应该放的位置,可能是我误解了什么。
sc_products.CatText在('brake mechanism'、'brake montage'、'hydral repair')和…..
中的位置可以更好地解决您的问题。请注意,引号中有多余的空格,这可能导致错误的结果或根本没有结果。如果使用括号
()
对查询中的
子句进行分组,您的问题将更容易理解。请回答您的问题。@OllieJones括号甚至可以解决他的问题。对不起,括号没有放在应该放的位置,可能是我误解了什么。
sc_products.CatText在('brake mechanism'、'brake montage'、'hydral repair')和…..
中的位置可以更好地解决您的问题。请注意,引号中有额外的空格,这可能导致错误的结果或根本没有结果。