C# 查询具有子类型的SQL数据库,并在c中显示#

C# 查询具有子类型的SQL数据库,并在c中显示#,c#,mysql,C#,Mysql,我现在已经为一个类似POS的系统创建了一个MySQL数据库,我正在使用子类型将一些不同的类型放入我的数据库中 CREATE TABLE Product( Prod_id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(40), Barcode INT ); CREATE TABLE Card( Prod_id INT, Price DECIMAL(8, 2), FOREIGN KEY (Prod_id) REFERENCES Product(Prod_

我现在已经为一个类似POS的系统创建了一个MySQL数据库,我正在使用子类型将一些不同的类型放入我的数据库中

CREATE TABLE Product(
Prod_id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(40),
Barcode INT
);

CREATE TABLE Card(
Prod_id INT,
Price DECIMAL(8, 2),
FOREIGN KEY (Prod_id) REFERENCES Product(Prod_id)
);
CREATE TABLE Weapon(
Prod_id INT,
Caliber_id INT,
FOREIGN KEY (Prod_id) REFERENCES Product(Prod_id)
);
当我扫描条形码时,我想查询数据库。当找到一个产品时,我想在屏幕上显示它的所有信息。我在C#中使用了一个数据表,每个结果都会向数据表中添加一个数据行

所以我有两个问题: 我怎样才能整洁地查询数据库,返回所有关于条形码的信息?
如何在屏幕上有效地显示这些信息?

我假设您只使用上述表格

请查找下面的sql语句,它将根据需要返回所有信息

Select p.Prod_id,p.Name,p.Barcode,c.Price, w.Caliber_id 
from Product p
inner join Card c
on 
(
p.Prod_id  = c.Prod_id 
)
inner join Weapon w
on 
(
p.Prod_id  = w.Prod_id 
) 
where p.Barcode = 'Barcode'
如果你有一些卡牌或武器中没有的产品,你可以使用左外连接


希望这对你有帮助

嗯,这不是确切的答案,但它确实给了我一个正确方向的暗示。使用内部联接时,我没有得到任何结果。如果我理解正确的话,那是因为产品要么是武器,要么是卡牌,而不是两者兼而有之。使用左连接几乎满足了我的需求。我唯一缺少的是一个关于产品类型的专栏,所以我把它添加到了产品中。嗨,Marcovannoord,别忘了在回答时打勾,这会转移你问题的更多答案