Join und case

WKonz

Grünschnabel
Hallo!

Datenbank: SQL Server 2005

PHP:
	ar.Artikelnummer,
	(Case when (A.Preisvs is null) then ar.Artikelnummer else A.Preisvs end) as ArtNr,
	ar2.VonDatum,
	ar2.Mengenstaffel,
	ar2.Preis,
	RB.Menge,
	RB.Rabatt
from
	RAB as RB INNER JOIN
							(
								artpr as ar2 INNER JOIN
								(
									a_Art as A INNER JOIN arpreis as ar
									ON A.Artikelnummer = (Case when (a_Art.Preisvs is null) then ar.Artikelnummer else a_Art.Preisvs end)
								)
								ON AP2.Artikelnummer = (Case when (a_Art.Preisvs is null) then ar.Artikelnummer else a_Art.Preisvs end)
							)
ON ar.Mengenstaffel = RB.Mrabatt

where ar.typ <> 2 and
ar.Datum = (SELECT TOP 1 Datum FROM artpr WHERE ar.typ <> 2 and ar.Artikelnummer = artpr.Artikelnummer)
order by ar.Artikelnummer, RB.Menge
(Die SQL-Anweisung ist grösser, es würde jedoch nur die Übersicht leiden)

Vereinfacht beschrieben:
Ich brauch aus einer Tabelle die Artikelnummer. Wenn in einer anderen Tabelle (Inner Join mit Artikelnummer) in einem Feld eine Artikelnummer drin steht, dann diese ArtikelNr verwenden, sonst jene aus der ersten Tabelle. Aufgrund dieser Artikelnummer brauch ich dann Daten aus mehreren Tabellen, u.a. ein Datum aus der Artikel-Tabelle, Preise aus der Preistabelle usw. Nu kann es sein, daß es mehrere Preise je Artikel gibt. Dann muss der Artikel auch mehrfach ausgegeben werden. Das oben ist eines meiner vielen Versuche. Aktuell wird angemeckert, daß a_Art.Preisvs nicht gebunden werden konnte
 
Wenn ich eine View erstellen könnte (was leider nicht geht), würde das ganze so aussehen:
ar.Artikelnummer,
(Case when (A.Preisvs is null) then ar.Artikelnummer else A.Preisvs end) as ArtNr
FROM tabellen.

Dann würde ich von dieser View aus ArtNr per Join mit den anderen Tabellen verbinden. Damit könnte ich in der gesamten Select-Anweisung, welche dann auf die View zugreift, die ArtNr abfragen. Das wäre die einfachste Lösung. Aber wie gesagt, geht nicht. Wie also kann ich das ohne View erstellen?

Vielen Dank im voraus!
 
Zurück