【发布时间】:2016-01-05 08:46:29
【问题描述】:
我在 MySQL 中有一个表 names,其中包含以下列 ID, type, row, value
复合主键是ID, type, row
此表的目的是将指定人员的所有姓名和职业保存在多行中 - 每行一个数据。
例如:在西班牙,人们通常有两个名字和两个姓氏,例如José Anastacio Rojas Laguna。
在德国,有很多人有一个名字但有两个姓氏。甚至是职业广泛的人,比如在大学教书,同时在医院当医生。在这种情况下,在德国,人们的名字中会出现Prof. Dr.。例如:Prof. Dr. José Anastacio Rojas Laguna
在这种情况下,我会将所有这些信息存储在这样的表中:
ID | type | row | value
1 | 0 | 1 | Prof.
1 | 0 | 2 | Dr.
1 | 1 | 1 | José
1 | 1 | 2 | Anastacio
1 | 2 | 1 | Rojas
1 | 2 | 2 | Laguna
ID 是为一个人提供的。表中的每个人都有一个唯一的ID,甚至一个人也由他的ID 标识。 type 定义名称的类型。 0 表示职业,1 表示名字,2 表示姓氏。 row 定义名称中的位置。 1 表示第一个名字,2 表示第二个名字,3 表示第三个名字,等等……职业和姓氏相同。
现在我想知道,我如何通过传递某个人的一些姓名来选择指定人的ID?我如何通过只给出几个值来确定 ID,这些值都出现在(或具有)相同的 ID 中?
【问题讨论】:
-
你能提供一个期望输出的例子吗?因为只有一个名字就可以得到多个ID。
-
没关系,我们的目标是让所有与给定名称匹配的人。
-
在您询问最终结果之前,您还有一个写得很好的问题。向我们展示输入和期望输出的样本,这样我们就不必开始猜测了。
-
标记你的数据库管理系统
-
@Juan Carlos Oropeza:例如,当我在我的数据库中“询问”一个名为
José Laguna的人时,我希望得到他的完整信息,如上例所示。输入将是他的名字和姓氏之一,输出将是他的完整信息。