根据特定类别选择多行(mysql)

时间:2011-05-19 18:38:34

标签: mysql

我不认为这是一个重复的帖子,因为我环顾四周,这似乎比已经被问到的更具体(但我可能是错的)。

我有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; 基本上有几个级别的类别,我希望从这里选择一些,从那里选择一些,他们都在这个顶级。我认为这可以在多个查询中执行,但我不知道如何......最后我希望以一组随机条目结束。

很抱歉读了很长时间,这是我得到的最佳解释。

1 个答案:

答案 0 :(得分:0)

刚才意识到我再也没有回到这个帖子......

我最终根据请求期间的需要在交换机中使用了几个mysql查询。完美地完成了工作。