2008-12-31 76 views
0

我在想,是否可以创建一个与 'select products where barcode in table1 = barcode in table2'具有相同功能的sql查询。我正在Python函数中写这个函数。一旦这个函数被调用,表会永久地加入,还是只是在该函数运行的时候? 谢谢。在两个表中生成SQL查询

+0

什么? “永久加入”是什么意思?你问是否数据库查询更改数据库? – 2008-12-31 21:45:48

回答

1

喜欢的东西:

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

这就是你想要的?

+0

这将起作用,但其他所有条件都相同(没有优化器参与),INNER JOIN方法会更快。 – 2008-12-31 17:36:20

10
SELECT t1.products 
FROM [Table1] t1 
INNER JOIN [Table2] t2 ON t2.barcode = t1.barcode 
0
SELECT table1.*, table2.* FROM table1 left join table2 on table1.barcode = table2.barcode 
0

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

SELECT table1.Products FROM表1 INNER JOIN上table1.barcode表2 = table2.barcode WHERE table1.Products不为空

0

下面就来谈谈自己通过在这些情况下,表的设计方式的基础上,对象角色建模。 (是的,我意识到这只是间接的问题。)

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

产品有条形码问题:产品是否可以没有条形码?同一产品可以有多个条形码?多个产品可以具有相同的条形码(如果你有UPC标签的任何经验,你知道答案,所有这些是TRUE。)

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

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

这直接导致(通过你的ORM模型)的架构有两个表:

产品
产品代码(PK)说明等

ProductBarcode
产品代码(FK)BarcodeValue
- 与一个由两部分组成的自然主键ProductCode + BarcodeValue

并按照其他答案中的描述将它们绑定在一起。

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