使用子查询数据筛选TableAdapters的主SQL查询
这基本上是一个SQL问题,关于如何使用子选择中的数据来过滤主查询。我正在使用tableadapters,但问题是如何在不使用联接的情况下在SQL中实现这一点。我正在使用tableadapters和ASP.NET,如本文所述: 我的问题是如何坚持在我的TableAdapter中不使用联接的想法(原因将在本文中讨论)。我有两张桌子:电话和电话协会。Phones表包含phoneID、手机号码、姓名等内容。PhonesAssociations表包含与该手机关联的手机(一对多)的相关信息。它包含诸如associationID、phoneID、addedByID之类的内容。我想为tableadapter创建一个查询,返回由单个ID添加的电话数据(手机、ID、姓名) 如果我没有过滤数据,并且希望返回所有电话和相关数据,那么sql很简单:使用子查询数据筛选TableAdapters的主SQL查询,sql,asp.net,tableadapter,Sql,Asp.net,Tableadapter,这基本上是一个SQL问题,关于如何使用子选择中的数据来过滤主查询。我正在使用tableadapters,但问题是如何在不使用联接的情况下在SQL中实现这一点。我正在使用tableadapters和ASP.NET,如本文所述: 我的问题是如何坚持在我的TableAdapter中不使用联接的想法(原因将在本文中讨论)。我有两张桌子:电话和电话协会。Phones表包含phoneID、手机号码、姓名等内容。PhonesAssociations表包含与该手机关联的手机(一对多)的相关信息。它包含诸如as
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
这也不起作用:
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
使用连接非常简单,但我没有找到使用subselect进行连接的语法。有没有SQL专家能为我指明正确的方向?如果您阅读本文,您将看到需要使用subselect而不是join,以便tableadapters可以创建更新、删除和插入方法。谢谢
需要返回的记录应保留其原始phoneID,我需要一份12–contractorwolf 16分钟前phoneID添加的所有电话(及其phoneID)的列表 我在评论中补充了这一点,但也许我应该在问题本身中澄清:
如果我更清楚,phones表中有3条记录的phoneId为4,8和12,PhoneAssociations表中有2条记录的phoneId为4和8,addedByID为12,那么我需要返回的是2条记录的phoneId为4和8,因为它们都是由12相加的
Phones
4
8
12
及
我想回答的是:phoneID 12添加了哪些phoneID?thx@Thomas-我对你的方法做了一些修改,以提供我需要的数据。
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
)
我使用的最后一个查询(以防其他人希望解决此类问题)如下所示:
这允许我传递一个addedByID
,并返回与其关联的电话及其正确的phoneID
。
再次感谢@Thomas的回答,这完全弥补了我的差距。
语句本身说“如果电话数据与
PhoneAssociations
存在关系,则将其与这些记录phoneIDs
和12的AddedByID
关联起来(或@AddedByID参数需要的任何内容)。希望能有所帮助!嗯,如果我在这里出错,请纠正我,但这似乎会返回一个包含相关addedByID的电话列表,但不会过滤到特定addedByID,我需要知道与特定addedByID关联的电话ID@contractorwolf-它是通过与PhoneA匹配的过滤器phoneID=1
实现的Associations.addedByID
。需要返回的记录应保留其原始phoneID,我需要所有电话的列表(及其phoneID)如果我更清楚的话,phoneID加上了12,phoneID为4、8和12的phones表中有3条记录,phoneID为4、8和12的PhoneAssociations表中有2条记录,phoneID为4和8,addedByID为12,我需要返回的是2条phoneID为4和8的记录,因为它们都是12加上去的答案是:phoneID 12添加了哪些phoneID?