我有一个看起来像这样的表:
[Jobs]
+-----+-------+---------+
+ ID + Title + Active +
+-----+-------+---------+
+ 1 + Admin + 0 +
+-----+-------+---------+
+ 2 + Mgr + 1 +
+-----+-------+---------+
+ 3 + Emp + 0 +
+-----+-------+---------+
[JobsTxt]
+-------+-------+---------+
+ JobID + Text + Type +
+-------+-------+---------+
+ 1 + test + 1 +
+-------+-------+---------+
+ 1 + test2 + 1 +
+-------+-------+---------+
+ 1 + test3 + 2 +
+-------+-------+---------+
+ 3 + test + 1 +
+-------+-------+---------+
我想编写一个查询,它为JobsTxt表中的Jobs条目提供了Jobs表中的Type = 1和Active = 0,其中JobsTxt.JobID = Jobs.ID
所以它会像:
Select [JobsTxt].Text from [JobsText] left join [Jobs] on [JobsTxt].JobId = [Jobs].ID where [JobsTxt].Type = 1 and [Jobs].Active = 0
我很喜欢这样的加入和查询,所以感谢任何帮助!
答案 0 :(得分:0)
请原谅,我不能直接就你的问题发表评论。所以,让我把它放在这里,即使我认为这可能不符合答案。
对我来说,你的SQL语句看起来非常好,应该提供你所描述的内容。也许你可以帮助我们,并提供一些有关所涉及的SQL方言的信息(即你正在运行的数据库系统和版本)?
修改强> 看来你确实有一个错字:
[...] from [JobsText] [...]
↑ - should there be an 'e'?
谢谢。
答案 1 :(得分:0)
如果您不需要JOIN,则EXISTS很好,这意味着您只需要其中一个表中的字段。
SELECT jt.Text
FROM [JobsText] jt
WHERE jt.Type = 1
AND EXISTS
(
SELECT 1
FROM [Jobs] j
WHERE j.ID = jt.JobID
AND j.Active = 0
);
答案 2 :(得分:0)
请使用以下查询:
DECLARE @Jobs TABLE (ID INT, Title VARCHAR(10), Active BIT )
INSERT INTO @Jobs VALUES
(1,'Admin',0),
(2,'Mgr',1),
(3,'Emp',0)
DECLARE @Jobtxt TABLE ( JobID INT, [Text] VARCHAR(10), [Type] INT)
INSERT INTO @Jobtxt VALUES
(1,'test',1),
(1,'test2',1),
(1,'test3',2),
(3,'test',1)
SELECT
Jt.JobID,Jt.[Text]
FROM
@Jobtxt Jt INNER JOIN @Jobs J ON Jt.JobID = J.ID
WHERE
J.Active = 0 AND Jt.[Type] =1