从sql中的两个表中进行选择

本文关键字:两个 行选 选择 sql | 更新日期: 2023-09-27 18:16:37

我发布这个问题是因为我真的找不到解决方案,我花了一天的时间搜索如何做到这一点,但我不能使它工作。这也是因为我是SQL的新手,我需要一些帮助。

: 我有一个数据库与3表:订单,产品,购买。在我的c#/。. NET应用程序,我需要显示一个订单的所有产品,首先这里是表的结构。

TABLE orders
    int id
    int Totalprice
Table products
    int id
    string name
    ...
Table buys
    int id
    int price
    int quantity
    int orderId
    int productId

同样,一个buy可以有多个产品和一个订单,一个order可以有多个buy。

我在我的应用程序中做什么:

在我的c#/。. NET应用程序,这就是我所做的:

SELECT * FROM buys WHERE orderid=listview.selecteditem.orderid;

i将结果存储在一个列表中,然后:

foreach(item in buys)//buys is the list<buys> stored from the previous query
{
        SELECT * FROM products WHERE productid = item.productId;
}

注意:这只是一个伪代码,因为我还没有开始编码。

问题:这段代码对我来说是有效的,但是它有点慢,需要执行两个查询才能获得预期的结果。我需要一种方法来做到这一点在一个SQL查询。提前感谢

从sql中的两个表中进行选择

您可能想使用join:

SELECT *
FROM buys b
JOIN orders o 
ON o.id = b.orderId
JOIN products p
ON b.id = o.productId

还请注意,最好指定字段而不是使用*

正如Michael建议的那样,您可能还需要查看索引以获得更好的查询性能。

就像ende说的,你可能想加入。看看下面的代码,看看应该执行哪个连接:连接的可视化表示