【问题标题】:Combine database tables and to form into one table合并数据库表并形成一张表
【发布时间】:2013-06-18 11:45:16
【问题描述】:

我有两张表,一张是客户详情,另一张是订单详情。每次客户订购东西时,它都会将其存储在数据库中。如何找到哪些客户订单以及他们订购了多少次,并结合客户名称和订单?

CUSTOMER DETAIL:

ID  NAME        AGE COUNTRY
1   AAA     22  US
2   BBB     26  UK
3   CCC     25  TN


ORDER DETAIL:

ID  ITEMS   PRICE QUANTITY
1   APPLE   5
1   ORANGE  6
1   MANGO   4

客户 AAA 有很多订单。

预期结果:

CUSTOMERDETAIL  ORDERDETAIL
AAA (HOW MANY TIMES HE ORDER AND ORDER DETAILS)

【问题讨论】:

  • 如果您在两个表中都有客户 ID,则可以使用 JOIN 子句。但我们不知道您的数据库的架构。
  • 提供您的架构和所需的输出。
  • 您需要在您的订单详细信息表中保留 customerid 作为 ref col。因此,每当您插入订单详细信息时,您也会插入 customerid。稍后,如果您想检索数据,请根据 customerid 加入两个表。在 google 上查看更多关于主键和参考键的详细信息。
  • @ShahidIqbal 看看我的问题。谢谢你的回复。
  • 是的,我已经回复你了,试试看。

标签: html mysql


【解决方案1】:
     Create Table Customer (CustomerId int identity(1,1),Name varchar(20))
     Create Table OrderDetail(OrderDetailId int identity(1,1), CustomerId int, Item varchar(20), Quantity int)

    Insert into Customer values('AAA')
    Insert into Customer values('BBB')
    Insert into Customer values('CCC')

    Insert into OrderDetail values(1,'Apple',10)
    Insert into OrderDetail values(1,'Banana',10)
    Insert into OrderDetail values(1,'Mango',10)

    select y.total, x.Item,x.quantity from
    (
    select c.customerId as customerId, d.Item, d.quantity from customer c inner join orderdetail d
    on      c.customerId = d.customerId
    )x
    inner join 
    (
        select customerid, COUNT(customerId)as total from orderdetail group by customerId
    )y
    on x.customerId = y.customerId

【讨论】:

    【解决方案2】:

    假设你有这样的架构:

    客户表(客户)

    ID (Customer Id) int primary key
    Name varchar(100)
    

    订单表(订单)

    ID (Order ID) int
    cusotmer_id (reference id of customer table primary key-ID) int
    quality int
    price float
    

    针对 eash 客户的第一次订单计数:

    select count(o.customer_id) as total_order, c.* from customer c left join orders o on c.ID = o.customer_id
    

    针对单个客户列出的订单:

    select c.*, o.* from customer cinner join orders o on c.ID = o.customer_id where c.ID = 1

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      以下查询给出了我的期望。

      SELECT name,items,price FROM customerdetail INNER JOIN orderdetail ON customerdetail .sno=orderdetail .id WHERE id=1 ;

      【讨论】:

        猜你喜欢
        • 2016-01-16
        • 2021-12-02
        • 1970-01-01
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-13
        相关资源
        最近更新 更多