从sql中的两个表中选择

Posted

技术标签:

【中文标题】从sql中的两个表中选择【英文标题】:Selecting from two tables in sql 【发布时间】:2014-08-06 14:35:43 【问题描述】:

我发布这个问题是因为我真的找不到解决方案,我花了一天时间搜索如何做到这一点,但我无法让它发挥作用。这也是因为我是 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可以有很多产品和1个订单,一个订单可以有很多buy。

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

在我的 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 【参考方案1】:

您可能想使用join:

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

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

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

【讨论】:

这也是一个可能的改进。 thnaks @EndeNeu 实际上我必须修改答案,以便它适合我的需要,我建议编辑,谢谢大家【参考方案2】:

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

【讨论】:

以上是关于从sql中的两个表中选择的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从两个表中的选择查询问题检索行

SQL 从两个表中选择数据(一行 -> 多行)

从两个表中选择更新 Linq 查询?

SQL,根据第三个表从两个表中选择,它引用它们

SQL从具有内连接和限制的两个表中选择[重复]

SQL从具有内连接和限制的两个表中选择[重复]