Php SQL CASE子句中的ORDER BY子句与JOIN
我有三张桌子:Php SQL CASE子句中的ORDER BY子句与JOIN,php,sql,symfony,doctrine,dql,Php,Sql,Symfony,Doctrine,Dql,我有三张桌子: 装备 项目 颜色 装备表与许多物品相关 项目表与颜色有多方面的关系 关系是这样的 我需要使用以下逻辑创建搜索功能: 如果用户输入“red airmax”,我将查找服装 如果没有这个名字的装备,我会搜索 如果没有这个名字的装备,我会按颜色搜索 所以当我用颜色搜索时,我得到的是红色,但不是airmax, 我也想用这个逻辑在物品中搜索airmax, 如果DB发现产品颜色为红色,请检查产品名称airmax 我正在使用symfony/学说 所以我的带有颜色的sql代码如下 从装备中选择o
项目表与颜色有多方面的关系 关系是这样的 我需要使用以下逻辑创建搜索功能: 如果用户输入“red airmax”,我将查找服装 如果没有这个名字的装备,我会搜索 如果没有这个名字的装备,我会按颜色搜索 所以当我用颜色搜索时,我得到的是红色,但不是airmax, 我也想用这个逻辑在物品中搜索airmax, 如果DB发现产品颜色为红色,请检查产品名称airmax 我正在使用symfony/学说 所以我的带有颜色的sql代码如下
从装备中选择o绑定:装备o
左连接o.i项
左连接i.c
其中c.name像“%red%”
或类似“%airmax%”的c.name
按o.id分组
订购人
案例
当i.name像“%airmax%”时,则为1
其他0
结束
这是错误的,因为如果我需要按case子句排序,我需要在groupby子句中添加I.id,
但我只需要买衣服
我们的目标是首先得到在他名字中有关键字的产品
目前我还不知道如何在物品名称中搜索,只有airmax而不是red,如果有人知道怎么做,也请说明
数据库示例
表格:服装id:1,名称:“vero moda”
身份证号码:2,姓名:“第一街”; 表格:项目
id:1,颜色_id:3,名称:“Vero moda sweatch”
id:2,颜色\ id:1,名称:“Nike Air Max”
id:3,颜色\ id:2,名称:“Pepe牛仔裤”
id:4,颜色_id:2,名称:'Naketano'
id:5,颜色_id:3,名字:'Dockers By Gerli Stiefel'
id:6,颜色\ id:2,名称:“牛仔裤”
表格:项目
id:1,装备id:1,物品id:1
id:2,装备id:1,物品id:5
id:3,装备id:1,物品id:6
id:4,装备id:2,物品id:2
id:5,装备id:2,物品id:3
id:6,装备id:2,物品id:4
表格:颜色
id:1,姓名:黑色
id:2,名称:蓝色
id:3,姓名:粉红
您提供的细节不够详细,但我将尝试
SELECT distinct o.name
FROM outfits o
inner JOIN item i = i.itemid = o.itemid
inner JOIN color c on c.colorid = i.colorid
WHERE c.name LIKE '%red%'
OR c.name LIKE '%airmax%'
or o.name like '%red%'
OR o.name LIKE '%airmax%'
or i.name like '%red%'
OR i.name LIKE '%airmax%'
ORDER BY
CASE
WHEN o.name LIKE '%airmax%' THEN 1
ELSE 0
END desc
这是相当不清楚的。请显示所有3个表的一些样本数据记录以及预期结果好吗?那里的连接并不反映“多对多”关系。你忘了两个关系表了吗?你错过了两个
JOIN
上的条件哦,对不起,产品颜色是多个关系,我会编辑一些行的,在那之后它成功了,谢谢