【问题标题】:Making a SQL Query in two tables在两个表中进行 SQL 查询
【发布时间】:2008-12-31 17:20:11
【问题描述】:

我想知道,是否可以创建一个执行相同功能的 sql 查询 'select products where barcode in table1 = barcode in table2'。我正在 python 程序中编写这个函数。调用该函数后,该表将永久连接还是仅在该函数运行时连接? 谢谢。

【问题讨论】:

  • 什么? “永久加入”是什么意思?您是在询问数据库查询是否会更改数据库?

标签: python sql


【解决方案1】:
SELECT t1.products
FROM [Table1] t1
INNER JOIN [Table2] t2 ON t2.barcode = t1.barcode

【讨论】:

    【解决方案2】:

    我想你想加入两个表:

    http://www.w3schools.com/Sql/sql_join.asp

    【讨论】:

      【解决方案3】:

      类似:

      SELECT * FROM table1 WHERE barcode IN (SELECT barcode FROM table2)
      

      这就是你要找的吗?

      【讨论】:

      • 这会起作用,但在其他条件相同(不涉及优化器)的情况下,INNER JOIN 方法会快得多。
      • 同意 Joel,这不是解决方案,即使它会起作用。提问者在深入了解 SQl 之前需要了解基本的连接,这也无助于实现这一目标。
      【解决方案4】:
      SELECT table1.*, table2.* FROM table1 left join table2 on table1.barcode = table2.barcode
      

      【讨论】:

        【解决方案5】:

        这是一个基于两个表中的公共字段内部连接两个表的示例。

        选择 table1.Products 从表 1 在 table1.barcode = table2.barcode 上的 INNER JOIN table2 WHERE table1.Products 不为空

        【讨论】:

          【解决方案6】:

          在这些情况下,这是一种基于对象角色建模的表格设计方式。 (是的,我意识到这只是与问题间接相关。)

          您有产品和条形码。产品由产品代码唯一标识(例如“A2111”;条形码由值唯一标识(例如 1002155061)。

          产品有条形码。问题:产品可以没有条形码吗?同一个产品可以有多个条码吗?多个产品可以有相同的条形码吗? (如果您对 UPC 标签有任何经验,您就会知道所有这些问题的答案都是正确的。)

          所以你可以做出一些断言:

          产品(代码)有零个或多个条形码(值)。
          条形码(值)具有一个或多个产品(代码)。 -- 假设:如果条形码与产品没有/没有/不会与产品相关,我们的条形码就没有独立存在。

          直接(通过您的 ORM 模型)导致具有两个表的模式:

          产品
          ProductCode(PK) 描述等

          产品条码
          ProductCode(FK) BarcodeValue
          -- 带有两部分自然主键,ProductCode + BarcodeValue

          然后按照其他答案中的说明将它们联系在一起。

          类似的断言可用于确定哪些字段进入您设计中的各个表中。

          【讨论】:

            猜你喜欢
            • 2020-06-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-17
            • 1970-01-01
            • 2022-01-23
            • 2014-08-30
            相关资源
            最近更新 更多