SQL创建并与三个表交互

SQL创建并与三个表交互,sql,Sql,下面是我正在玩的游戏:让我们模拟一个电子商务站点。我们需要用户、产品和订单 用户需要姓名和电子邮件 产品需要名称和价格 订单需要产品的参考号 所有3个都需要主键 指示 按照摘要中的标准创建3个表。添加一些数据以填充每个表-至少3个用户、3个产品、3个订单 对您的数据运行查询:获取第一个订单的所有产品;获得所有订单;获取订单的总成本(订单上所有产品的价格总和) 从orders向用户添加外键引用,并更新orders表以将用户链接到每个订单 对数据运行进一步查询:获取用户的所有订单;获取每个用

下面是我正在玩的游戏:让我们模拟一个电子商务站点。我们需要用户、产品和订单

  • 用户需要姓名和电子邮件
  • 产品需要名称和价格
  • 订单需要产品的参考号
所有3个都需要主键


指示

  • 按照摘要中的标准创建3个表。添加一些数据以填充每个表-至少3个用户、3个产品、3个订单
  • 对您的数据运行查询:获取第一个订单的所有产品;获得所有订单;获取订单的总成本(订单上所有产品的价格总和)
  • 从orders向用户添加外键引用,并更新orders表以将用户链接到每个订单
  • 对数据运行进一步查询:获取用户的所有订单;获取每个用户有多少订单
有时间的人能写出这是什么样子吗。我将永远感激有人能把这写出来,这样我就可以研究它,克服这个问题,看看如何做到这一点。以下是我目前掌握的情况:

   CREATE TABLE orders (
     order_id SERIAL PRIMARY KEY,
     stuff VARCHAR(150),
     product_id INTEGER REFERENCES products(product_id)
     );
    
  INSERT INTO users (name, email)
    VALUES
    ('Justin', 'Justinjgh@gmail.com'),
    ('Bill', 'Bill@gmail.com'),
    ('Rick', 'Rick@gmail.com');
  
  INSERT INTO products (name, price)
    VALUES
    ('Chair', 22),
    ('Turkey', 10),
    ('Lizard', 10000);
  
  INSERT INTO orders (stuff, product_id)
    VALUES
    ('Testthis', 1),
    ('Testthat', 2),
    ('Andtestthis', 3);
  
  SELECT * FROM products
    WHERE product_id = 1;
  
  SELECT * FROM orders;

我不打算回答你的全部问题(看起来像是家庭作业),但我会给你一些帮助来克服这个困难

首先,您的用户和产品表看起来非常合理。您可以向它们添加密钥(数字、条形码或ID等)以处理不明确的情况。但是这些表格基本上是正确的——每一行都包含关于其中一个事物的信息,例如

  • Users表中的每一行都引用1个用户及其属性(电子邮件地址)
  • 产品也是如此(每条生产线都是一种产品,有其名称和价格)
现在,听命令。你已经走到一半了,但是再看看里面的田野

  • 订单号。。。没关系
  • 东西。。。不知道里面有什么
  • 产品标识。。。什么?这意味着每个订单可以有1个,而且只能有1个产品。这似乎很奇怪——在现实生活中,一个订单应该可以有多个产品,不是吗
相反,我建议在订单和产品之间存在多对多关系——每个订单可以有多个不同的产品(同一产品可以有不同的订单)

似乎还缺少一些东西——用户和订单之间的关系。这里的关系是什么?一对一?每个订单1个用户?每个订单有多个用户?因此,有一个链接可以帮助您实现这一点

一旦你回答了这两个问题,你的第一个问题就会得到回答。但是,您可能需要考虑下一步

  • 想想在网上买东西吧。您的总价是您所有物品的成本之和。但你可以有多个相同的项目(例如,12瓶你最喜欢的饮料)。你可能想知道这些链接是如何连接的