不同的行 - 基于两个字段(Distinct Row - Based on two fields)

2019-10-17 04:22发布

有没有一种方法,以有立足其非复制的两个字段的表定义?

通过这一点,我有3个GID,CID,价格

标准:

  • 只能有1个cid 1个gid
  • 可以有多个cid的,只要存在多个gid的和标准1不违反

我基本上要具有在该表设计的限制,如果可能的话。 不知道它可能只是想我会问。


编辑(2010-08-27 11:18 CST)

好了一点澄清,我有两个指标,以及,一个在gid和其他是cid ,我可以有两个指标确定唯一性? 该表基本上是一个连接表,因为画中的两个表具有一对多的关系,只要他们的对手是独特的它的ID。

表/索引声明:

  • GID {数值:长}(主:否,独特的:否,忽略空值:否)[FK]
  • CID {数值:长}(主:否,独特的:否,忽略空值:否)[FK]
  • 价格{数字:单}

用法:

  • CID 1-多GID
    • CID是从tblCat衍生(作为PK)
  • GID 1-多CID
    • GID从tblGrp衍生(作为PK)

Answer 1:

有一个在MS Access中创建多字段索引没有困难。 您可以直接点击按钮的索引(闪电),并选择你所需要的。



Answer 2:

你的第一点是...

  • 只能有1个CID 1个GID

但后来你说...

  • GID 1-多CID

所以我不能确定你想要什么。 如果该数据集代表可接受的样本值...

gid cid
  1   1
  2   1
  2   2

...我用下面的方法创建的表。 主键是上一个复合索引gidcid 。 禁止Null值这些字段,并确保只有值的独特的对可被存储在表中。

一个gid值可与多个不同的配对cid值。 和一个cid可以与多个不同的配对gid值。

如果这不是你以后,请说明你想要的东西来代替。 如果你有一个需要额外指数cid而已,你可以添加一个...它不会与主键索引干扰。

下面是我所使用的方法。

Public Sub CreateTable_GoldBishop()
    Const cstrTable As String = "tblGoldBishop"
    Dim cn As Object
    Dim strSql As String

    Set cn = CurrentProject.Connection
    strSql = "CREATE TABLE " & cstrTable & "(" & vbCrLf & _
        "gid INTEGER," & vbCrLf & _
        "cid INTEGER," & vbCrLf & _
        "price SINGLE," & vbCrLf & _
        "CONSTRAINT pkey PRIMARY KEY" & _
        "(gid, cid)" & vbCrLf & _
        ");"
    Debug.Print strSql
    cn.Execute strSql
    Set cn = Nothing
End Sub

顺便说一句,我不是想告诉你用DDL来创建表,但如果这是你想要的表的设计,你可以运行的程序,然后检查在设计视图表。



文章来源: Distinct Row - Based on two fields