搜索

首页  >  问答  >  正文

如何查询存储在数据库中的多个选择元素

查询专业领域(存储为任何选定项目数组)不起作用。我正在尝试找出一种在编辑时获取注册农民的专业知识领域的方法。

我有两张桌子。数据库中的登记农民表和专业领域表。

专业领域存储在专业领域表中。

注册农民表包含注册农民的所有数据。

这是专业领域表:

area_of_expertise_id id_number_of_the_farmer areas_of_expertise register_farmer_id
1 23232223 培养 1
2 23233453 收获 2

注册农民表:

register_farmer_id name_of_the_farmer age_of_the_farmer
1 无名氏 23
2 玛丽·多伊 34

我想在专业领域表中拥有一个注册农民 ID,就像在注册农民表中一样。我猜这将是一个外键。

我正在尝试查询某个农民的所有专业领域。查询到的数据将显示在其页面上以供编辑。

将数据存储在专业领域效果很好。我使用 foreach 循环来存储数据。现在的问题是查询数据。

请帮忙。

P粉347804896P粉347804896228 天前409

全部回复(1)我来回复

  • P粉060112396

    P粉0601123962024-04-05 12:46:13

    您可能需要过度考虑您的表格设计,因为这看起来像经典的 1:n 关系(即使是 1:1,信息也不会改变)

    尝试这样:

    Farmers:
    ID (PRIMARY, AutoIncrement), name, age
    
    Expertises:
    farmerID (index), areaOfExpertise

    插入如下(假设准备好的语句):

    INSERT INTO `farmers` VALUES (NULL, ?, ?)`

    然后,您从活动连接中检索“最后插入 ID”并将其放入第二个表中。

    INSERT INTO `expertise` VALUES (?, ?)

    要检索信息,您需要采取相反的方法。要检索所有农民,您可以使用查询

    SELECT * FROM `farmers`

    并且,要仅获取特定农民(假设您有 ID),您可以使用:

    SELECT * FROM `farmers` WHERE ID = ?

    无论您是查看所有农民还是仅查看一个农民,在评估信息时,您都将访问如下专业领域:

    SELECT * FROM `expertise` WHERE farmerID = ?

    这就是它的全部内容。 假设是 1:1 的关系(如“每个农民只有一个专业领域”),你也可以这样一次性写出来:

    SELECT * FROM `farmers`, `expertise` WHERE ID = ? and farmerID = ID;

    回复
    0
  • 取消回复