【发布时间】:2008-12-31 17:20:11
【问题描述】:
我想知道,是否可以创建一个执行相同功能的 sql 查询
'select products where barcode in table1 = barcode in table2'。我正在 python 程序中编写这个函数。调用该函数后,该表将永久连接还是仅在该函数运行时连接?
谢谢。
【问题讨论】:
-
什么? “永久加入”是什么意思?您是在询问数据库查询是否会更改数据库?
我想知道,是否可以创建一个执行相同功能的 sql 查询
'select products where barcode in table1 = barcode in table2'。我正在 python 程序中编写这个函数。调用该函数后,该表将永久连接还是仅在该函数运行时连接?
谢谢。
【问题讨论】:
SELECT t1.products
FROM [Table1] t1
INNER JOIN [Table2] t2 ON t2.barcode = t1.barcode
【讨论】:
我想你想加入两个表:
【讨论】:
类似:
SELECT * FROM table1 WHERE barcode IN (SELECT barcode FROM table2)
这就是你要找的吗?
【讨论】:
SELECT table1.*, table2.* FROM table1 left join table2 on table1.barcode = table2.barcode
【讨论】:
这是一个基于两个表中的公共字段内部连接两个表的示例。
选择 table1.Products 从表 1 在 table1.barcode = table2.barcode 上的 INNER JOIN table2 WHERE table1.Products 不为空
【讨论】:
在这些情况下,这是一种基于对象角色建模的表格设计方式。 (是的,我意识到这只是与问题间接相关。)
您有产品和条形码。产品由产品代码唯一标识(例如“A2111”;条形码由值唯一标识(例如 1002155061)。
产品有条形码。问题:产品可以没有条形码吗?同一个产品可以有多个条码吗?多个产品可以有相同的条形码吗? (如果您对 UPC 标签有任何经验,您就会知道所有这些问题的答案都是正确的。)
所以你可以做出一些断言:
产品(代码)有零个或多个条形码(值)。
条形码(值)具有一个或多个产品(代码)。 -- 假设:如果条形码与产品没有/没有/不会与产品相关,我们的条形码就没有独立存在。
直接(通过您的 ORM 模型)导致具有两个表的模式:
产品
ProductCode(PK) 描述等
产品条码
ProductCode(FK) BarcodeValue
-- 带有两部分自然主键,ProductCode + BarcodeValue
然后按照其他答案中的说明将它们联系在一起。
类似的断言可用于确定哪些字段进入您设计中的各个表中。
【讨论】: