2010-05-01 104 views
1

参数。 我的第一选择命令看起来像使用SQL SELECT语句来获得我想要写一个SQL语句</p> <p>我有2个表店& StoreTransactions为第二select语句

SELECT [StoreID],[ParentStoreID] 
FROM Store 

非常简单的东西。我如何获取返回的StoreID并将其用于第二条select语句?

SELECT [StoreTransactionID],[TransactionDate],[StoreID] 
FROM StoreTransactions 
WHERE StoreID = returned values from the above query 

任何帮助将是伟大的!

回答

3
SELECT [StoreTransactionID],[TransactionDate],[StoreID] 
FROM StoreTransactions 
WHERE StoreID in (select StoreId from Store) 

这被称为嵌套选择或内部选择。

+0

嗨Joel, 我收到一条错误消息116,级别16,状态1,行16 子查询没有引入EXISTS时,只能在选择列表中指定一个表达式。 我会进一步探讨嵌套选择。 谢谢 – 2010-05-01 23:04:59

+0

RE:你的错误你必须改变这个部分有多个列? *从Store *中选择StoreId或正在使用=而不是in? – 2010-05-01 23:07:53

+0

@diver,当使用in时,你的嵌套select必须返回一个像set这样的数组(即一列)。注意我写的sql在嵌套select中只有一个字段。 – Joel 2010-05-01 23:09:23

1

夫妇的做这件事的其他方式...

SELECT [StoreTransactionID],[TransactionDate],[StoreID] 
FROM StoreTransactions st 
WHERE EXISTS 
(
SELECT * 
FROM Store s 
WHERE s.[StoreID] = st.[StoreID] 
) 

而且

SELECT [StoreTransactionID],[TransactionDate],st.[StoreID] 
FROM StoreTransactions st 
INNER JOIN Store s ON s.[StoreID] = st.[StoreID] 
+0

两个很好的建议。我个人更喜欢内部联接到嵌套选择。 – Joel 2010-05-01 23:07:52

1

写它的另一种方法是使用一个INNER JOIN

SELECT [StoreTransactionID],[TransactionDate],[StoreTransactions.StoreID] 
FROM StoreTransactions INNER JOIN Store ON StoreTransactions.StoreID=Store.StoreID 

这可能在一些RDBMS中更有效率。

如果您的Store查询也包含WHERE子句,则可以将其添加到上面的查询中。

+0

谢谢你们。是的,我糟糕的是我混淆了SQL命令。 – 2010-05-01 23:45:17