Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
php+mysql双表排序_Php_Mysql_Sorting - Fatal编程技术网

php+mysql双表排序

php+mysql双表排序,php,mysql,sorting,Php,Mysql,Sorting,我将获得每个$food\u数据 没关系,我可以展示一下 但是这个数组$food_数据是按food.food_id排序的,我需要对user.food进行相同的排序 例如: 乔-苹果、橘子、香蕉默认按食物分类\u id 1,2,3 约翰-苹果、橘子默认按食物分类\u id 1,2 David-苹果、橙子、梨默认按食物分类\u id 1,2,50 彼得-苹果、梨默认按食物分类\u id 1,50 但我需要改变它 如何转换为 Joe-香蕉、苹果、橙色排序与用户相同。食品字段值3,1,2 John-ora

我将获得每个$food\u数据

没关系,我可以展示一下

但是这个数组$food_数据是按food.food_id排序的,我需要对user.food进行相同的排序

例如:

乔-苹果、橘子、香蕉默认按食物分类\u id 1,2,3

约翰-苹果、橘子默认按食物分类\u id 1,2

David-苹果、橙子、梨默认按食物分类\u id 1,2,50

彼得-苹果、梨默认按食物分类\u id 1,50

但我需要改变它

如何转换为

Joe-香蕉、苹果、橙色排序与用户相同。食品字段值3,1,2

John-orange,苹果排序与用户相同。食品字段值2,1

David-梨、橙、苹果排序与用户相同。食品字段值30,2,1

彼得-梨,苹果分类与用户相同。食品字段值50,1

我通过smarty模板插件一个接一个地尝试选择sql

但这是如此浪费资源。我可以用php或mysql做些什么


聪明的方法是使用uid、food\u id对创建一个单独的user\u food表,而不是将food\u id存储在逗号分隔的字符串中的单个字段中。在这种情况下,查询将非常简单,使用:

快速方法是使用连接两个表,然后再次使用组\u concat:

select u.uid, u.user_name, group_concat(f.food_name order by f.food_id) as food_name
from user u
left join user_food uf on u.uid=uf.uid
left join food f on uf.food_id=f.food_id
group by u.uid, u.user_name 

聪明的方法是使用uid、food\u id对创建一个单独的user\u food表,而不是将food\u id存储在逗号分隔的字符串中的单个字段中。在这种情况下,查询将非常简单,使用:

快速方法是使用连接两个表,然后再次使用组\u concat:

select u.uid, u.user_name, group_concat(f.food_name order by f.food_id) as food_name
from user u
left join user_food uf on u.uid=uf.uid
left join food f on uf.food_id=f.food_id
group by u.uid, u.user_name 
您可以使用如下代码

select u.uid, u.user_name, group_concat(f.food_name order by f.food_id) as food_name
from user u
left join food f on find_in_set(f.food_id,u.food)>0
group by u.uid, u.user_name 
实现乔-香蕉、苹果、橘子的排序与用户相同。食品字段值3,1,2 其他人也一样。。。您可以使用“按字段排序”来排序所需的任何内容

您可以使用以下代码

select u.uid, u.user_name, group_concat(f.food_name order by f.food_id) as food_name
from user u
left join food f on find_in_set(f.food_id,u.food)>0
group by u.uid, u.user_name 
实现乔-香蕉、苹果、橘子的排序与用户相同。食品字段值3,1,2
其他人也一样。。。您可以使用ORDER BY FIELD来点您想要的任何东西

在查询的末尾添加ORDER BY food\u id DESC有很多方法可以实现您想要的东西,但似乎您的要求如下:.1。规范化您的数据您建议我将两个sql语句合并为一个语句吗?您希望像这样从测试中选择*id按字段id排序,3,2,1?在查询的末尾添加按食物顺序的id描述有很多方法可以实现您想要的,但看起来,这就是您想要的:.1。规范化您的数据您建议我将两条sql语句合并为一条语句吗?您希望这样选择吗?从测试中选择id为2,3,1 ORDER BY FIELDid,3,2,1?@spencer7593欢迎您在不参考ORDER BY的情况下发表相同的评论。我查过了,不一样了,谢谢你。我得到了它。你让我学到了新的东西statement@spencer7593欢迎您发表同样的评论,而不必提及订货人。我查过了,不一样了,谢谢你。我得到了它。你让我学会了一种新的说法,它很方便。这就是我想要的。我得到了它。非常感谢BrijalSavaliya,很方便。这就是我想要的。我得到了它。非常感谢BrijalSavaliya。