嘿,所有。 我有一堆表有一些共同的领域绑在一起的表,但我无法找出正确的方式来倾倒他们在一个有意义的方式。从多个具有公共字段的表中倾销数据
基本上,用户将被给予两个测试,并且每个测试可以被多次进行。
,类似于下面的关于用户和测试的主要表存储信息(我们称这个表MAIN):
user_id test iteration completion_time
1 1 1 1:00
1 2 1 1:30
1 1 2 0:49
1 2 2 1:30
每一个测试网页,然后有自己的表来存储所提供的答案,因为有些页面有很多问题。我们将这个示例表称为RESULTS,但有很多这样的表基本相同。
user_id test iteration q1 q2 q3
1 1 1 A B A
1 2 1 B B A
1 1 2 A B B
1 2 2 A B B
这些结果表(再次,有很多)基本上存储结果,再加上刚好足够的信息,结果在所有的表准确地绑在一起。我这样设置,因为只用一张桌子就可以得到一张有几百列的表格,而我之前读过的表格并不推荐。
所以这里的问题是我无法弄清楚如何最好地把这些表连接在一起并得到结果。我已经读过关于联合和联盟的信息,据我所知,没有一个看起来是正确的,因为我需要一次从大约10-15张表中提取数据。
我可以做一个巨大的复杂的选择 - 沿
select m.*, a.*, b.*, c.* from main m, results_a a, results_b b, results_c c where a.user_id=m.user_id and b.user_id=m.user_id and c.user_id=m.user_id'
和工作线的东西,但我们有了一个更好的办法。请记住,在这个例子中我只给出了3个结果表 - 在我的实际应用中,它将更像15-20个结果表。如果我想抛出任何额外的逻辑(例如,可以说,我只想要我之前查询过的相同数据,但仅用于测试2),除非是非常复杂,否则它将返回某些行的重复项,它变得更加复杂。甚至不要谈论分拣。
从我读过的内容来看,JOIN用于2个表格,而UNION结合了结果行而不是列。
我不认为是mysql专家,但是我在发布之前已经仔细研究了这一点。我觉得我必须接近正确的答案,但只是没有达到正确的答案。
任何人都可以给我一些指导吗?
现在说的太早了,但我认为这肯定让我指出了正确的方向。非常感谢! – jk2 2011-04-12 18:30:00