gpt4 book ai didi

mysql - 复杂 SQL 查询条件中的语法错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:50 25 4
gpt4 key购买 nike

我的 sql 语句有些问题。

这是相关表格的图片:

enter image description here

一个产品可以属于多个类别。单个产品可以有多个品种类别(即:尺寸、颜色等)一个 varietycategory 可以有多个 varietycategoryoptions (ie: small, medium, large)

表 searchcriteria.criterianame 松散地与 varietycategory.category 相关

表 searchcriteriaoption.criteriaoption 与 varietycategoryoption.descriptor 松散相关。

我得到 searchcriteria.criterianame 并使用该字符串作为我们想要与 varietycategory.category 匹配的值,我们还必须获得各种 searchcriteriaoption.criteriaoption 字符串(用于该 searchcriteria.criterianame)并将其与 varietycategoryoption.descriptor 匹配对于那个 varietycategory.category。

这是sql:

    SELECT DISTINCT categories.*, product.*
FROM (categories, product, product_category)
LEFT JOIN varietycategory ON varietycategory.productid = product.id
LEFT JOIN varietycategoryoption ON varietycategoryoption.varietycategoryid = varietycategory.id
WHERE product_category.categoryid=4
AND product.id=product_category.productid
AND categories.category_id=product_category.categoryid
AND (
(varietycategory.category = 'color' AND (varietycategoryoption.descriptor='red' OR varietycategoryoption.descriptor='blue'))
OR
(varietycategory.category = 'size' AND (varietycategoryoption.descriptor = 'small' OR varietycategoryoption.descriptor='medium'))
)

但是我得到一个错误:

Unknown column 'varietycategory.id' in 'on clause'

我试图找出我做错了什么。我尝试稍微简化查询(只是为了尝试确定 sql 查询的哪一部分导致了问题)以仅将 searchcriteria.category 字符串与 varietycategory.category 匹配,并且查询正确返回数据集。这是工作查询(此查询已简化且不够充分):

SELECT DISTINCT categories.*, product.*

FROM (categories, product, product_category)
LEFT JOIN varietycategory ON varietycategory.productid = product.id
WHERE product_category.categoryid=4
AND product.id=product_category.productid
AND categories.category_id=product_category.categoryid
AND (varietycategory.category = 'color' OR varietycategory.category = 'size' OR varietycategory.category='shape');

但我还需要能够匹配各种类别选项。

为了避免混淆,我只使用 searchcriteria 来获取字段类别并将其用作字符串以匹配 varietycategory.category我只使用 searchcriteriaoption 来获取字段 criteriaoption 并将其用作字符串以匹配 varietycategoryoption.descriptor

有谁知道我的第一个查询做错了什么?请提供帮助,因为 SQL 不是专业知识。

谢谢!

最佳答案

错误在:

  OR 
(varietycategory.category = 'size' (varietycategoryoption.desciptor = 'small' OR varietycategoryoption.descriptor='medium'))
^
|
An operator (AND, OR) is missing here

顺便说一句,这与连接语法无关。

关于mysql - 复杂 SQL 查询条件中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25656473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com