Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用关联变量分组_Mysql - Fatal编程技术网

Mysql 使用关联变量分组

Mysql 使用关联变量分组,mysql,Mysql,我的表格如下: Account no. Login Name Numbering 1234 rty234 1 1234 bhoin1 1 3456 rty234 2 3456 0hudp 2 9876 cfrdk 3 从上表可以看出,rty234和bhoin1注册了相同的账号1234,因此我知道rty234和b

我的表格如下:

Account no.    Login Name    Numbering
1234           rty234        1
1234           bhoin1        1
3456           rty234        2
3456           0hudp         2
9876           cfrdk         3
从上表可以看出,rty234和bhoin1注册了相同的账号1234,因此我知道rty234和bhoin1是相关的,我将它们编号为1。编号字段基于帐号。 然后我发现rty234还注册了另一个账号3456,0hudp也注册了相同的账号。因此,我得出结论,rty234、bhoin1和0hudp是相关的。因此,我想将第三行和第四行重新编号为1。如果它们没有进一步的联系,那么只保留编号。如何使用mysql实现这一点

预期产出如下:

Account no.    Login Name    Numbering    New_Numbering
1234           rty234        1            1
1234           bhoin1        1            1
3456           rty234        2            1
3456           0hudp         2            1
9876           cfrdk         3            3

您需要了解如何设计关系数据库。

您要使用
新编号
字段进行的这些分组应在注册帐户时完成。我看到两条需要跟踪的任意信息:帐号和登录名。似乎注册帐户的人可以在这里键入他们想要的任何内容,实际上,也许帐户号码必须是数字。那个细节无关紧要

这里您需要的是一个帐户,它可以有多个与之关联的帐号,以及多个登录名。我还假设未来的发展可能会增加更多,例如,为什么人们需要多次登录?也许不同的人在使用它们,或者不同的应用程序。据推测,我们可以收集有关登录名的附加信息,这些信息存储有关每个登录名的附加详细信息。关于账号也可以这样说——当然,它们包含的细节不仅仅是账号

首先,您需要一个主
登录
表。
您将rty234和bhoin1描述为他们是独一无二的人。因此,这是一个
login\u name
列,它是
login
表中的唯一索引。此表应该有一个自动递增的登录id作为主键。此表可能还有一个
密码
字段和有关此人的其他信息

其次,创建一个
帐户
表。
创建他们的登录名后,让他们使用该登录名注册一个帐户。将此过程分为两步。当他们提供一个新帐号时,在
account
表中为其创建一个记录,其中包含只有账户持有人才知道的其他识别信息。我认为,为了创造这个记录,你必须验证这实际上是他们的账户。此表还将包含一个名为
account\u id
的自动递增主键,以及
account\u no
和其他有关帐户的详细信息

第三,创建一个
login\u帐户
表。
一旦您验证了登录确实应该有权访问帐户,请在此处创建一条记录。这应该包含一个连接这两个表的
登录id
和一个
帐户id
。此外,最好包含所提供的信息,这些信息表明此登录应该可以访问此帐户

现在,当您想要查询这些数据时,您可以找到具有相同登录id或帐户id的数据组,甚至可以找到共享具有特定注册的登录名或帐户的数据组。除此之外,在SQL查询中进行操作会变得很麻烦。因此,如果你真的想查看数据,看看谁在同一个组织或什么的,因为他们共享同一组的登录名或帐户,你必须有某种脚本

创建一个
组织
表。
此表应包含一个
组织id
,以便您可以跟踪它,但一旦您确定了组,您可能需要添加名称或其他注释,或将其链接到其他功能。然后,您还可以将此
organization\u id
字段添加到
login
account
表中,以便了解组织后可以填写这些表。您必须考虑两个组织是否可以共享帐户,并且可能需要更复杂的设计。但我在这里要保持简单

您的脚本应该加载所有的
login\u id
account\u id
值,并将它们缓存到某个地方。然后通读它们,如果它们有
组织id
,将它们的
登录id
帐户id
放在一个hashmap中,值为
组织id
。然后加载所有
login\u帐户
记录。如果
login\u id
account\u id
的hashmap中有一个
organization\u id
,则将另一个添加到hashmap中,并使用相同的
organization\u id
。(如果已经存在一个异常,这将违反我所做的简单组织唯一性假设,但这是处理复杂性的地方-因此我将抛出一个异常,并在运行脚本时查看是否发生)


希望这是足够的例子,让你开始。当您正确地设计这样一个数据库时,您可以让信息自然地连接起来。这使得列添加和将来的更新更加容易。祝你好运

您希望输出是什么?请给出一个示例输出。Cheers开放使用程序?样本输出plz。从my_表中选择*,1 x