这基本上是一个SQL问题,关于如何使用子选择中的数据来过滤主查询。我正在使用tableadapters但问题是如何在不使用连接的情况下在SQL中执行此操作。我正在使用tableadapters和ASP.NET,如本文所述:
http://msdn.microsoft.com/en-us/library/aa581776.aspx
我的问题是如何坚持不使用联接我的tableadapters的想法(原因在文章中讨论)。我有2个表:电话和PhoneAssociations。 Phones表包含phoneID,cellNumber,name等等.PhonesAssociations表包含有关哪些电话(一对多)与该电话相关联的信息。它包含的东西,如associationID,phoneID,addedByID。我想为tableadapter创建一个查询,该查询返回由单个ID添加的电话数据(单元格,ID,名称)。
如果我没有过滤数据并希望返回所有手机和相关数据,那么sql很简单:
SELECT
phoneID,
cellNumber,
providerID,
password,
nickname,
added,
(SELECT
addedByID
FROM PhoneAssociations pa
WHERE p.phoneID = pa.addedByID) AS addedByID
FROM Phones AS p
但我似乎无法弄清楚如何在不使用连接的情况下进行过滤,该列表由addedByID列出,以下不起作用:
SELECT
phoneID,
cellNumber,
providerID,
password,
nickname,
added,
(SELECT
addedByID
FROM PhoneAssociations pa
WHERE p.phoneID = pa.addedByID) AS addedByID
FROM Phones AS p
WHERE addedBYID=1
这也不起作用:
WHERE pa.addedBYID=1
这很简单,使用连接,但我找不到使用子选择的语法。那里的任何SQL专家都能指出我正确的方向吗?如果查看该文章,您将看到需要使用子选择而不是连接,以便tableadapters可以创建更新,删除和插入方法。谢谢!
需要退回的记录应该保留原来的phoneID,我需要一个已经通过phoneID of 12添加的所有手机(带有phoneID)的列表 - contractorwolf 16分钟前
我在评论中添加了这个,但也许我应该在问题本身中澄清:
如果我更清楚,电话表中有3条记录,其中phoneIDs为4,8和12条记录,PhoneAssociations表中有2条记录,phoneIDs为4和8,并且addBidID为12,我需要返回的是2 phoneIDs为4和8的记录,因为它们都被12添加了BYID
Phones
4
8
12
和
PhoneAssociations (addedByID is second column)
4, 12
8, 12
我想回答的是:phoneID 12添加了哪些phoneID? THX
答案 0 :(得分:1)
Select phoneID
, cellNumber, providerID, password
, nickname, added
, phoneID As addedByID
From Phones AS p
Where phoneID = 1
And Exists (
Select 1
From PhoneAssociations As PA1
Where PA1.addedByID = P.phoneID
)
答案 1 :(得分:0)
@Thomas - 我稍微修改了你的方法,以便为我提供所需的数据。 我使用的最终查询(以防其他任何人想要解决此类问题)在这里:
SELECT
phoneID,
cellNumber,
providerID,
password,
fullName,
nickname,
(SELECT
providerName
FROM dbo.CellProviders AS cp
WHERE p.providerID=cp.providerID) AS providerName
FROM dbo.Phones as p
WHERE EXISTS (SELECT 1 FROM PhoneAssociations AS pa
WHERE pa.phoneID = p.phoneID
AND pa.addedByID = @addedByID)
允许我传递addedByID
并使用正确的phoneID
返回与之关联的手机。
再次感谢@Thomas的回答,它完全弥合了我的差距。
声明本身说“向我提供与PhoneAssociations
存在关系的电话数据,其中包含这些记录phoneIDs
和AddedByID
12(或者@addedByID参数需要的任何内容)。希望有所帮助!