我创建了一个包含多个表的数据库。如何从两个表中获取colums SQL
档案表 http://imageshack.us/photo/my-images/838/profileqw.jpg/ 存储所有porfiles
SalaryGroup表 http://imageshack.us/photo/my-images/255/salarygroup.jpg/ 存储所有的工资
ProfileSalaryGroups http://imageshack.us/photo/my-images/138/profileandsalary.jpg/ 存储配置文件:
是有关我的问题的表和连接的工资
我有几个存储过程插入配置文件/工资等我有一个过程,连接配置文件和工资,并将它们存储在“profileSalaryGroups”表中。 我也有一个过程,可以获取连接到特定配置文件的所有工资。
这些prrocedures执行以下步骤:
连接型材&薪金程序(工作完全):
ALTER PROCEDURE [dbo].[ConnectProfileAndSalary]
-- Add the parameters for the stored procedure here
@ProfileName varchar(50) = '',
@Salaryname varchar(50) = ''
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @pId int
DECLARE @sId int
SELECT @pId = Id from [Profile] where Name = @ProfileName
SELECT @sId = Id from SalaryGroup where Name = @Salaryname
-- If the Id number already exists
IF ((SELECT COUNT(*) FROM ProfileSalaryGroups WHERE SalaryGroupId = @sId) > 0 OR
(SELECT COUNT(*) FROM ProfileSalaryGroups WHERE ProfileId = @pId) > 0)
RAISERROR ('Connection Exists', -- Message text.
16, -- Severity.
1)
ELSE
INSERT INTO ProfileSalaryGroups (SalaryGroupId,ProfileId) VALUES (@sId, @pId)
END
获取被连接到一个特定的配置文件的所有薪金(完全工作):
ALTER PROCEDURE [dbo].[GetConnectedSalaries]
-- Add the parameters for the stored procedure here
@ProfId int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT SalaryGroupId, s.Name from ProfileSalaryGroups ps
INNER JOIN SalaryGroup as s on s.Id = ps.SalaryGroupId
Where ps.ProfileId = @ProfId
END
问题:
我想创建一个程序,让我所有的salarie Id和名称不是 连接到配置文件。
我尝试了好几种方法来此,例如:
SELECT SalaryGroupId, s.Name from ProfileSalaryGroups ps
INNER JOIN SalaryGroup as s on s.Id = ps.SalaryGroupId
Where ps.ProfileId != @ProfId
这让我的,我想要的东西的一半。我想获得所有没有连接到这个配置文件的工资,但是这个代码返回了所有与配置文件有连接但没有作为参数发送的工资ID和名字,但它不包括所有的存在于“SalaryGroup”表中的工资
SELECT s.Id, s.Name from SalaryGroup s
where NOT EXISTS (SELECT SalaryGroupId, s.Name, s.Id from ProfileSalaryGroups ps
INNER JOIN SalaryGroup as s on s.Id = ps.SalaryGroupId
Where ps.ProfileId = 17
)
这没有任何返回。
Iv'e一直在这一段时间,并尝试了其他几种方法(在某些情况下可笑),我卡住了,如果需要更多的信息,然后问,我会尽我所能来提供它。
如果标题不正确,那么我很抱歉,但我不知道该如何解决这个问题。如果@Admin有一个更好的标题,随时可以改变它。
谢谢!
这是复杂
ps.SalaryGroupId IS NULL
:d。请优化您的问题。 – 2013-02-28 11:03:44基本上,我需要获得未连接到特定配置文件的薪金ID和薪资名称。例如: 在html页面中,您创建了一个名为“test”的配置文件 此配置文件获取了编号为5的编号。 我将此编号作为参数发送给我的过程,并希望获取所有这些工资的名称和ID没有连接到ID为5的个人资料,在这个例子中,这将是所有的薪水,因为新的个人资料只是已经创建,并没有连接到任何薪水。 – ThunD3eR 2013-02-28 11:09:13