+------------------------------------+
| uid | user_name | food |
+-----------------------------------+
| 12345 | Joe | 3,1,2 |
| 12346 | John | 2,1 |
| 12347 | David | 30,2,1 |
| 12355 | Peter | 50,1 |
+-----------------------------------+
+-------------------------+
| food_id | food_name |
+------------------------+
| 1 | apple |
| 2 | orange |
| 3 | banana |
| 50 | pear |
+------------------------+
$user_sql = "SELECT `uid`,`user_name`,`food` FROM `user`";
$stmt = $pdo->prepare($user_sql);
$stmt->execute();
$user_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
$food_id = $user_data["food"]; // will be get eg: 50,1,3
$food_sql = "SELECT * FROM `food` WHERE `food_id` in ($food_id)";
$stmt = $pdo->prepare($food_sql);
$stmt->execute();
$food_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
我会foreach $ food_data。php + mysql两个表格排序
没关系,可以显示它。
但是这个数组($ food_data)是按food
排序的顺序。 food_id
,我需要排序相同user
。 food
EG显示:
乔 - 苹果,橘子,香蕉(默认排序food_id 1,2,3)
约翰 - 苹果,橘子(违约food_id 1,2排序)
大卫 - 苹果,橘子,梨(违约food_id 1,2,50排序)
彼得 - 苹果,梨(违约food_id 1,50排序)
但我需要改变它。
如何改变
乔 - 香蕉,苹果,橘子(排序相同,以user
food
字段值3,1,2)。
约翰 - 橙,苹果(排序相同,以user
。food
字段值2,1)
大卫 - 梨,橘子,苹果(排序相同,以user
food
字段值30,2,1)
彼得 - 梨,苹果(与user
相同。 food
字段值50,1)
我已经尝试一个一个通过smarty模板插件选择sql。
但这太浪费资源了。我可以在php或mysql中做些什么?
在查询结尾处添加'ORDER BY food_id DESC' – Mihai
有许多方法可以实现你想要的东西,但是看起来,这是你要求的东西:http://stackoverflow.com/questions/4858828/sql-where-in-sort-by-order-of-the-list。 –
1.标准化您的数据 – Strawberry