Sql ct(不存在);概括起来很复杂。感谢您提供的资源(更多学习,呸!)。然而,虽然标记模式没有像它可能的那样正常化,但它也不是EAV。我假设称为PRODUCT_TAG_TYPE_FREE_TAG的条件常量是混淆事物并推断EAV设计的原因,但用户无法控制此列的值
ct(不存在);概括起来很复杂。感谢您提供的资源(更多学习,呸!)。然而,虽然标记模式没有像它可能的那样正常化,但它也不是EAV。我假设称为PRODUCT_TAG_TYPE_FREE_TAG的条件常量是混淆事物并推断EAV设计的原因,但用户无法控制此列的值。但常量的名称肯定是不明确的!(你可以把这归咎于之前的代码猴子;我在这个项目中继承了很多“怪癖”。)Sql ct(不存在);概括起来很复杂。感谢您提供的资源(更多学习,呸!)。然而,虽然标记模式没有像它可能的那样正常化,但它也不是EAV。我假设称为PRODUCT_TAG_TYPE_FREE_TAG的条件常量是混淆事物并推断EAV设计的原因,但用户无法控制此列的值,sql,mysql,database,Sql,Mysql,Database,ct(不存在);概括起来很复杂。感谢您提供的资源(更多学习,呸!)。然而,虽然标记模式没有像它可能的那样正常化,但它也不是EAV。我假设称为PRODUCT_TAG_TYPE_FREE_TAG的条件常量是混淆事物并推断EAV设计的原因,但用户无法控制此列的值。但常量的名称肯定是不明确的!(你可以把这归咎于之前的代码猴子;我在这个项目中继承了很多“怪癖”。) select distinct p2c.product_id from '.TABLE_PRODUCT_TO_CA
select
distinct p2c.product_id
from '.TABLE_PRODUCT_TO_CATEGORY.' p2c
inner join '.TABLE_PRODUCT.' p on p2c.product_id = p.id
inner join '.TABLE_PRODUCT_TAG.' pt on p.id = pt.product_id
inner join '.TABLE_TAG_TYPE.' tt on pt.tag_type_id = tt.id
where
tt.id = '.PRODUCT_TAG_TYPE_FREE_TAG.'
and p.status = 1
and lower(pt.value) = "cats"
and lower(pt.value) = "kittens"
select
distinct p2c.product_id
from '.TABLE_PRODUCT_TO_CATEGORY.' p2c
inner join '.TABLE_PRODUCT.' p on p2c.product_id = p.id
inner join '.TABLE_PRODUCT_TAG.' pt on p.id = pt.product_id
inner join '.TABLE_PRODUCT_TAG.' pt2 on p.id = pt2.product_id
inner join '.TABLE_TAG_TYPE.' tt on pt.tag_type_id = tt.id
where
tt.id = '.PRODUCT_TAG_TYPE_FREE_TAG.'
and p.status = 1
and lower(pt.value) = "cats"
and lower(pt2.value) = "kittens"
select
distinct p2c.product_id
from '.TABLE_PRODUCT_TO_CATEGORY.' p2c
inner join '.TABLE_PRODUCT.' p on p2c.product_id = p.id
inner join '.TABLE_PRODUCT_TAG.' pt on p.id = pt.product_id
inner join '.TABLE_TAG_TYPE.' tt on pt.tag_type_id = tt.id
where
tt.id = '.PRODUCT_TAG_TYPE_FREE_TAG.'
and p.status = 1
and (lower(pt.value) = "cats" or lower(pt.value) = "kittens")
and lower(pt.value) = "cats"
and lower(pt.value) = "kittens"
and lower(pt.value) in ("cats","kittens")
and lower(pt.value) = "cats"
and lower(pt.value) = "kittens"
and lower(pt1.value) = "cats"
and lower(pt2.value) in ("kittens", "dogs")
and not exists (select * from '.TABLE_PRODUCT_TAG.' pt3 where pt3.product_id = p.id and lower(pt3.value) = "parrots")
SELECT ...
FROM P
WHERE p.status = 1
AND p.ProductID IN (SELECT Product_ID FROM tags WHERE value = "cats")
AND p.ProductID IN (SELECT Product_ID FROM tags WHERE value = "kittens")
select
distinct p2c.product_id
from '.TABLE_PRODUCT_TO_CATEGORY.' p2c
inner join '.TABLE_PRODUCT.' p on p2c.product_id = p.id
where
and p.status = 1
and 2 = (
SELECT COUNT(1)
FROM '.TABLE_PRODUCT_TAG.' pt
INNER JOIN '.TABLE_TAG_TYPE.' tt ON pt.tag_type_id = tt.id
WHERE tt.id = '.PRODUCT_TAG_TYPE_FREE_TAG.'
AND pt.product_id = p.id /* edit */
lower(pt.value) IN( "cats", "kittens" )
)