【问题标题】:SQL: How to refer to multiple data sets with only one id?SQL:如何引用多个只有一个id的数据集?
【发布时间】:2023-03-06 06:51:01
【问题描述】:

我想创建一个包含订单的“订单”表。它应具有包括 userID 和 orderID 的字段。在另一个名为“orderItems”的表中,我想列出所有涉及一个订单的项目。问题是,所有引用一个订单的项目都应该只通过一个 ID 进行查询。因为可以仅在“订单”的 orderID 字段中设置此 ID。

那么,我必须如何创建索引?有可能以这种方式实现吗?您对如何改进这个方案有什么建议吗?

我希望你明白,我想告诉你什么。

提前致谢, 马可

【问题讨论】:

    标签: mysql sql database indexing primary-key


    【解决方案1】:

    您描述的情况最好通过使用ORDER_ID 列的OrderOrderItems 表之间的外键来解决。

    无法将ORDER_ID 用作每个ORDER_ITEM 的主键,因为该键不是唯一的。

    DDL

    create table `order`(
        order_id int NOT NULL,
        customer_name varchar(50),
        primary key(order_id)
    );
    
    create table order_item(
      order_item_id int NOT NULL,
      order_id int,
      item_name varchar(50),
      primary key(order_item_id),
      foreign key(order_id) references `order`(order_id)
    );
    

    完成此 DDL 设置后,您可以通过连接两个表使用一个键轻松引用订单。

    select * from
    `order` o
    join order_item oi
    on o.order_id = oi.order_id
    where o.order_id = 5;
    

    【讨论】:

    • 是的。工作正常。谢谢!
    • @MarcoFrost 太棒了!很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多