Delete und Select

20/11/2009 - 09:16 von Holger Schröter | Report spam
Guten Morgen Wissenstràger,
ich möchte die beiden Abfragen in einer Vereinen:

DELETE FROM OPP.OPREL
FROM dbo.OPREL_TA(@KJ1) OPREL_TA LEFT OUTER JOIN
OPP.OPREL ON OPREL_TA.OPName = OPP.OPREL.OPNAME AND OPREL_TA.Pred_ID =
OPP.OPREL.PRED_ID AND
OPREL_TA.SUCC_ID = OPP.OPREL.SUCC_ID AND OPREL_TA.Expr2 = OPP.OPREL.REL_TYPE
WHERE (OPP.OPREL.OPNAME = @KJ1)

Die Function OPREL_TA auf die sich die Delete-Abfrage bezieht sieht so aus:

SELECT @KJ1 AS OPName, SUBSTRING(@KJ1, 3, 9) AS OP_TS,
LEFT(dbo.tbl_Jobsammlung.Kernjobnummer2, 2)
+ '.' + SUBSTRING(dbo.tbl_Jobsammlung.Kernjobnummer2,
4, 5)
+ '.' + dbo.tbl_Jobsammlung.lfd_Nr + '.' +
dbo.tbl_JobEstimate.Sequenz + '-' + RIGHT('0000000' + CONVERT(varchar(7),
dbo.tbl_JobEstimate.JobPosID),
7) AS Pred_ID, LEFT(tbl_Jobsammlung_1.Kernjobnummer2,
2) + '.' + SUBSTRING(tbl_Jobsammlung_1.Kernjobnummer2, 4, 5)
+ '.' + tbl_Jobsammlung_1.lfd_Nr + '.' +
tbl_JobEstimate_1.Sequenz + '-' + RIGHT('0000000' + CONVERT(varchar(7),
tbl_JobEstimate_1.JobPosID), 7)
AS SUCC_ID, CASE WHEN dbo.tbl_Job_Beziehung.lag IS
NULL THEN '0' ELSE dbo.tbl_Job_Beziehung.lag END AS Expr1,
CASE WHEN tbl_Job_Beziehung.Beziehung IS NULL OR
tbl_Job_Beziehung.beziehung = '' THEN 'FS' ELSE
tbl_Job_Beziehung.beziehung END AS Expr2, MAX(dbo.tbl_Job_Beziehung.ID) AS
IDBEZ,
dbo.tbl_Jobsammlung.JobID
FROM dbo.tbl_Jobsammlung tbl_Jobsammlung_1 INNER JOIN
dbo.tbl_JobEstimate tbl_JobEstimate_1 ON
tbl_Jobsammlung_1.JobID = tbl_JobEstimate_1.JobID AND
tbl_Jobsammlung_1.JobID = tbl_JobEstimate_1.JobID AND
tbl_Jobsammlung_1.JobID = tbl_JobEstimate_1.JobID AND
tbl_Jobsammlung_1.JobID = tbl_JobEstimate_1.JobID
RIGHT OUTER JOIN
dbo.tbl_Job_Beziehung ON tbl_JobEstimate_1.JobPosID =
dbo.tbl_Job_Beziehung.Bez_JobPosID LEFT OUTER JOIN
dbo.tbl_Jobsammlung INNER JOIN
dbo.tbl_JobEstimate ON dbo.tbl_Jobsammlung.JobID =
dbo.tbl_JobEstimate.JobID ON
dbo.tbl_Job_Beziehung.JobPosID =
dbo.tbl_JobEstimate.JobPosID LEFT OUTER JOIN
OPP.OPREL ON dbo.tbl_Job_Beziehung.ID = OPP.OPREL.ID
WHERE (dbo.tbl_Jobsammlung.Kernjobnummer1 = @KJ1) AND
(dbo.tbl_Jobsammlung.Revision = 'F') AND (dbo.tbl_Jobsammlung.Team = 1) AND
(dbo.tbl_Jobsammlung.opp = 1) AND
(dbo.tbl_JobEstimate.Sequenz IS NOT NULL) AND (dbo.tbl_JobEstimate.Sequenz <>
N'') AND
(LEFT(tbl_Jobsammlung_1.Kernjobnummer2, 2) + '.' +
SUBSTRING(tbl_Jobsammlung_1.Kernjobnummer2, 4, 5)
+ '.' + tbl_Jobsammlung_1.lfd_Nr + '.' +
tbl_JobEstimate_1.Sequenz + '-' + RIGHT('0000000' + CONVERT(varchar(7),
tbl_JobEstimate_1.JobPosID), 7)
IS NOT NULL) AND
(LEFT(dbo.tbl_Jobsammlung.Kernjobnummer2, 2) + '.' +
SUBSTRING(dbo.tbl_Jobsammlung.Kernjobnummer2, 4, 5)
+ '.' + dbo.tbl_Jobsammlung.lfd_Nr + '.' +
dbo.tbl_JobEstimate.Sequenz + '-' + RIGHT('0000000' + CONVERT(varchar(7),
dbo.tbl_JobEstimate.JobPosID),
7) IS NOT NULL) AND (OPP.OPREL.ID IS NULL)
GROUP BY LEFT(dbo.tbl_Jobsammlung.Kernjobnummer2, 2) + '.' +
SUBSTRING(dbo.tbl_Jobsammlung.Kernjobnummer2, 4, 5)
+ '.' + dbo.tbl_Jobsammlung.lfd_Nr + '.' +
dbo.tbl_JobEstimate.Sequenz + '-' + RIGHT('0000000' + CONVERT(varchar(7),
dbo.tbl_JobEstimate.JobPosID),
7), LEFT(tbl_Jobsammlung_1.Kernjobnummer2, 2) + '.' +
SUBSTRING(tbl_Jobsammlung_1.Kernjobnummer2, 4, 5)
+ '.' + tbl_Jobsammlung_1.lfd_Nr + '.' +
tbl_JobEstimate_1.Sequenz + '-' + RIGHT('0000000' + CONVERT(varchar(7),
tbl_JobEstimate_1.JobPosID), 7),
CASE WHEN tbl_Job_Beziehung.Beziehung IS NULL OR
tbl_Job_Beziehung.beziehung = '' THEN 'FS' ELSE
tbl_Job_Beziehung.beziehung END, CASE WHEN dbo.tbl_Job_Beziehung.lag IS NULL
THEN '0' ELSE dbo.tbl_Job_Beziehung.lag END,
dbo.tbl_Job_Beziehung.ID, dbo.tbl_Jobsammlung.JobID

Bekommt man das irgend wie zusammen?

Danke
Holger
MSDE2000
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
20/11/2009 - 10:04 | Warnen spam
Hallo Holger,

"Holger Schröter" schrieb:

ich möchte die beiden Abfragen in einer Vereinen:



wie wàre es, wenn man die vorher mal ordentlich formatiert und damit
mal ansatzweise lesbar macht. In der Form werden sich das wohl nur die
allerwenigsten antun.

Vom Inhalt her würde ich mal sagen: Derjenige, der das geschrieben hat,
gehört geschlagen.

INNER JOIN dbo.tbl_JobEstimate tbl_JobEstimate_1
ON tbl_Jobsammlung_1.JobID = tbl_JobEstimate_1.JobID
AND tbl_Jobsammlung_1.JobID = tbl_JobEstimate_1.JobID
AND tbl_Jobsammlung_1.JobID = tbl_JobEstimate_1.JobID
AND tbl_Jobsammlung_1.JobID = tbl_JobEstimate_1.JobID

Was soll das bitte sein? Meinst Du, wenn Du es viermal schreibst, wird
die Datenbank schon denken "Ok, ok, wenn er es wirklich so dringend
braucht, mach ichs halt"?

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen