我不认为这是一个重复的帖子,因为我环顾四周,这似乎比已经被问到的更具体(但我可能是错的)。
我有4个表,其中一个只是一个查找表
SELECT exercises.id as exid, name, sets, reps, type, movement, categories.id
FROM exercises
INNER JOIN exercisecategory ON exercises.id = exerciseid
INNER JOIN categories ON categoryid = categories.id
INNER JOIN workoutcategory ON workoutid = workoutcategory.id
WHERE (workoutcategory.id = '$workouttypeid')
AND rand_id > UNIX_TIMESTAMP()
ORDER BY rand_id ASC LIMIT 6;
练习表包含练习名称,集合,代表和ID的列表
categories 表包含id,musclegroup和移动类型
exercisecategory 表包含一个id,以及一个更具体的动作(即:上半身推,或上半身拉)
exercisecategory 表是包含(并匹配id)的查找表,用于exerciseid,categoryid和workoutid
我还在练习表中添加了一列,该列在输入数据库中的行时生成随机数。然后,此数字仅在调用时更新指定的类别,然后排序并显示前6个列表的升序。这为我生成一个很好的随机条目。 (在SO的其他地方找到解决方案)。
这适用于从特定顶级类别生成6个随机练习。但我想进一步深入研究。这是一个例子......
选择categoryid 4中的所有行
然后仍然在类别4结果中,找到所有有movementid 2,然后找到一个带有typeid 1的条目,然后找到另一个用于typeid 2,等等
TLDR; 基本上有几个级别的类别,我希望从这里选择一些,从那里选择一些,他们都在这个顶级。我认为这可以在多个查询中执行,但我不知道如何......最后我希望以一组随机条目结束。
很抱歉读了很长时间,这是我得到的最佳解释。
答案 0 :(得分:0)
刚才意识到我再也没有回到这个帖子......
我最终根据请求期间的需要在交换机中使用了几个mysql查询。完美地完成了工作。