从sql中的两个表中选择

时间:2014-08-06 14:35:43

标签: c# mysql sql query-optimization

我发布这个问题是因为我真的无法找到解决方案,我花了一天时间搜索如何做到这一点,但我无法使其发挥作用。这也是因为我是sql的新手,我需要一些帮助。

情况: 我有一个包含3个表的数据库:Orders,Producs,Buys。在我的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

此外,购买可以有很多产品,有1个订单,订单可以有很多购买。

我在申请表中做了什么:

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

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

我将此结果存储在一个列表中,之后:

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

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

问题: 这段代码对我有用,但它有点慢,需要执行两次查询才能得到预期的结果。我需要一种方法在一个SQL查询中执行此操作。提前致谢

2 个答案:

答案 0 :(得分:3)

您可能想要使用join

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

另请注意,指定字段而不是使用*是一种很好的做法。

正如迈克尔建议的那样,您可能还需要查看indexes以获得更好的查询效果。

答案 1 :(得分:0)

就像特里说的那样,你可能想加入。看看这个,看看你应该做哪个加入:Visual Representation of Joins