比较表A的2个字段和表B的6个字段

时间:2014-04-16 09:12:46

标签: mysql

我的MySQL数据库中有两个表。一个包含requiredSkill1requiredSkillLevel1requiredSkill2requiredSkillLevel2requiredSkill3requiredSkillLevel3

另一个表每个用户有X行,包含以下列:skilllevel

itemid  requiredSkill1  requiredSkillLevel1 requiredSkill2  requiredSkillLevel2 requiredSkill3  requiredSkillLevel3
2410    3319            4                   20211           1                   NULL            NULL

另一张表:

userid  skill   level
21058   3412    4
21058   3435    2
21058   3312    4

请记住,这些只是示例。

我希望每个itemidrequiredSkill{1-3}requiredSkillLevel{1-3}中具有匹配值。

这甚至可以通过单个查询实现,并且这仍然是高性能的,因为用户表每个用户最多包含300行,而item表具有6000行的固定值。这将在Web应用程序中使用,因此我可以使用Ajax从数据库加载项目范围以减少加载时间。

1 个答案:

答案 0 :(得分:0)

我没有设置数据。 SQL Fiddle会有所帮助,但我想你想这样做:

  SELECT itemid FROM items i
  INNER JOIN users u1 ON u1.skill = i.requiredSkill1 AND u1.level >= i.requiredSkillLevel1
  INNER JOIN users u2 ON u2.skill = i.requiredSkill2 AND u2.level >= i.requiredSkillLevel2 AND u1.userid = u2.userid
  INNER JOIN users u3 ON u3.skill = i.requiredSkill3 AND u3.level >= i.requiredSkillLevel3 AND u3.userid = u1.userid

如果您发布演示数据,有人会为您解决此问题。