我回过头来问过这个问题:Adding attachments to taks records in T_SQL 并得到了我的问题的完美答案。
但是我需要更进一步。如果我有以下内容(基于上一个问题的答案)
SELECT TaskId, TaskDescription, TaskType
FROM Tasks
WHERE TaskType = 1 [FIRST-TABLE]
我希望能够选择
SELECT AttachmentId, TaskId, [FileName], FileLocation
FROM TaskAttachments
[WHERE TaskId IN FIRST-TABLE] ;
我需要能够将两个表都返回到asp.net
我可以编写一个执行此操作的查询:
SELECT AttachmentId, TaskId, [FileName], FileLocation
FROM TaskAttachments
WHERE TaskId EXISTS IN (SELECT TaskId, TaskDescription, TaskType
FROM Tasks
WHERE TaskType = 1);
我的实际查询更长,有很多连接,所以第二个查询变得很长,这看起来很复杂,需要两次选择相同的数据。
使用从第一个SELECT
返回的实际数据是否有更好的方法?
(顺便说一句,请原谅任何语法错误。这只是为了快速说明,我的实际代码工作正常!!)
答案 0 :(得分:0)
在这种情况下,您可以使用公用表表达式:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^page1/page2/?$ page2.php [NC,L]
RewriteRule ^page1/?$ page1.php [NC,L]
修改强>
;with cte as(SELECT TaskId, TaskDescription, TaskType FROM Tasks)
SELECT AttachmentId, TaskId, [FileName], FileLocation
FROM TaskAttachments where TaskID in(select TaskId from cte where TaskType = 1)
答案 1 :(得分:0)
加入这两个表可能不是使用EXISTS子句吗?
gmp_fprintf (FILE *fp, const char *fmt, ...)
gmp_fscanf (FILE *fp, const char *fmt, ...)
这会导致查询更短。
答案 2 :(得分:0)
SELECT AttachmentId, TaskAttachments.TaskId, [FileName], FileLocation
FROM TaskAttachments
JOIN Tasks
on TaskAttachments.TaskId = Tasks.TaskId
and Tasks.TaskType = 1