【问题标题】:Sql one to many relationshipSql 一对多关系
【发布时间】:2014-01-17 19:53:23
【问题描述】:

在我的应用程序中,我有以下客户、产品。我希望每个客户都有某些产品(一对多关系)我的代码:

表创建:

Create Table Client 
(
IDC int identity(1,1) not null primary key,
NumeC nvarchar(50),
CIF nvarchar(50) unique
)
Create Table Produs
(
IDP int identity(1,1) not null,
NumeP nvarchar(50),
Cantitate int,
IDC int 
)

这是外键:

Alter table Produs add constraint FK_Client_Produs_IDC
Foreign key (IDC) references Client(IDC)

选择语句查询加入客户和foreach客户显示产品:

Select NumeC,CIF from Client
Inner Join Produs
ON Client.IDC = Produs.IDC

我不知道我做错了什么,我只想为每个客户展示产品。它没有给我那个。它只是重复客户的名称,现在向我显示每个客户的产品

【问题讨论】:

    标签: sql sql-server database


    【解决方案1】:

    在您的SELECT 中,您从不包含Produs 表中的任何内容,那么它为什么要显示给您。

    Select NumeC,CIF,NumeP
    from Client
    Inner Join Produs
    ON Client.IDC = Produs.IDC
    

    【讨论】:

    • 是的,谢谢,但它会显示每个产品的客户名称。示例:客户端的 1 个 DataGridView1 和来自该客户端的产品的另一个 DataGridView2 分开。当您单击 DataGridView1 中的一行以在 DataGridView2 中显示与在 DataGridView1(ROW) 中选择的客户端相对应的产品时。
    • 您需要在 DataGridView1 中编写 on clickon press 事件,该事件将查询与该客户端相关的所有产品的数据库。这完全超出了您原始问题的范围。
    • 是的,我知道,我会将其标记为答案,但我还有另一个问题,我将拥有客户和产品历史,正如您看到的 CIF 是独一无二的。因此,当 dataGridView1 中的 Click 事件时,我怎么知道在 Where 子句中从 Client Inner Join Produs ON Client.IDC = Produs.IDC 中放入什么内容,我的意思是历史将重复同一个客户,不同产品如何选择?
    • 您需要提出另一个问题并根据该信息进行相应的表述。在 cmets 中回答这个问题太长了,另外,参与讨论超出了这个问题的范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2023-04-05
    • 2015-08-05
    相关资源
    最近更新 更多