c# - 从sql中的两个表中选择

标签 c# mysql sql query-optimization

我发布这个问题是因为我真的找不到解决方案,我花了一天时间寻找如何做到这一点,但我无法让它发挥作用。这也是因为我是 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

此外,一次购买可以有很多产品和 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 查询中执行此操作的方法。提前致谢

最佳答案

您可能想使用 join :

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

另请注意,最好的做法是指定字段而不是使用 *

正如 Michael 所建议的,您可能还想看看 indexes以获得更好的查询性能。

关于c# - 从sql中的两个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25163193/

相关文章:

c# - Visual Studio 2010 - 修复 "using"功能?

mysql - 将负值插入mysql数据库?

php - 如何在 php 的 mysql 查询中使用占位符

php - Smarty foreach mysql 问题

mysql - VALID 查询上的 Nodejs MySQL ER_PARSE_ERROR

sql - 无法重置 Azure SQL 服务器的密码(灰显)

c# - 如何扫描两个图像的差异?

c# - 如何将纯文本json数据转成字符串?

c# - 如何在C#中通过CommandText中的参数进行过滤?

c# - Scaffold-DbContext SQL View ? ASP 网络核心 3.1