是否可以查询这些表?
我有一个看起来像这样的表格。我想得到这样是否可以查询这些表?
1.2,“我的名字是”数据,1.6,“伯爵”,12345“石坚真棒”
我不认为这是可能的这个模式,但希望看看我是否错了。我尝试了一个交叉连接,但有可能不仅仅是实际的值。
应该完成的是值表被编写了很多次(对于大量的值),但是描述表具有静态的唯一值,并且通过将它们放在单独的表中,它们不会得到一遍又一遍地写。
Values Table
Column names = DataID1|DataID1Value|DataID2|DataID2Value|DataID3|DataID3Value
Row values = 1 1.2 2 1.6 3 12345
Description Table
Column names = DescriptionID1|Description
Row value = 1 "My name is"
Row value = 2 "Earl"
Row value = 3 "Rock Hard Awesome"
如何:
SELECT DISTINCT v.DataID1Value, d1.Description,
v.DataID2Value, d2.Description,
v.DataID3Value, d3.Description
FROM Values v
INNER JOIN Description d1 on d1.DescriptionID = v.DataID1
INNER JOIN Description d2 on d2.DescriptionID = v.DataID2
INNER JOIN Description d3 on d3.DescriptionID = v.DataID3
个人而言,我不会存储数据的方式。你所拥有的基本上是一个查询表,它与许多只有一个列的列相关联。所以你必须加入到你想查看描述的每一列。这是可能的,但会导致可怕的表现问题,因为这张桌子将成为锁定的噩梦。
如果您的静态值不会更改,请查看它们(如果您希望在表单上使用它们)并将它们存储在插入值表中。那么你只能查询一个表。
然后去阅读关于EAV表格,他们是什么问题以及为什么他们在数据库设计中是穷人技术。
这就是你如何查询当前表。请注意,您可以多次加入以获取每个值所需的信息。当您有多个连接到同一个表时,d1,d2,d3是您需要的不同别名。
SELECT DISTINCT v.DataID1Value, d1.Description,
v.DataID2Value, d2.Description,
v.DataID3Value, d3.Description
FROM Values v
INNER JOIN Description d1 on d1.DescriptionID = v.DataID1
INNER JOIN Description d2 on d2.DescriptionID = v.DataID2
INNER JOIN Description d3 on d3.DescriptionID = v.DataID3
这是我写的同一个查询:) – 2010-06-07 14:04:51
NOt挺好的,你的错,因为它将表重名为表两次。 – HLGEM 2010-06-07 14:39:27
我想你错过了我写的东西的一部分,也许帮助我证明了为什么我认为这是不可能的。 请注意你有Desc2和Desc3。但是这些不存在于我目前的模式中。 如果我错了,请更正/原谅我。 – Maestro1024 2010-06-07 13:28:21
将Desc1,Desc2,Desc3替换为Desc,并从缺少的Decsription表名中运行查询 – Bharat 2010-06-07 13:33:19
Appart,此选择为您提供输出并提供给定的输入。如果这不是你所需要的,你应该更新你的问题。 – 2010-06-07 13:34:59