Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks Enterprise PDM
  Abfrage SQL rekursiv

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
SolidCAM bei der 23. Hausmesse des Technikszentrums by Werkzeug-Eylert
Autor Thema:  Abfrage SQL rekursiv (1000 mal gelesen)
magge84
Mitglied
Dipl.-Ing. (Entwicklung)


Sehen Sie sich das Profil von magge84 an!   Senden Sie eine Private Message an magge84  Schreiben Sie einen Gästebucheintrag für magge84

Beiträge: 66
Registriert: 04.09.2008

Solid Works 2018 + PDM
Windows 10 64-bit
HP Z-Book
Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
NVIDIA Quadro M3000M

erstellt am: 05. Mrz. 2018 13:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Gemeinde,

ich brauche eine rekursive SQL-Abfrage. Bin kein Profi, daher brauche ich euere Hilfe.

Hier der Code:

Code:

With AllDoc (Path, Filename, DID, XID, Level)
As
(
Select Distinct P.Path, D.Filename, D.DocumentID as DID, X.DocumentID as XID, 1 as Level
       From XRefs X, Documents D, Projects P, DocumentsInProjects DIP
       Where X.DocumentID = (Select DocumentID From Documents Where Filename = '00000076.sldasm')
            and X.XRefDocument = D.DocumentID
            and D.DocumentID = DIP.DocumentID
            and DIP.ProjectID = P.ProjectID
            and D.Deleted = 0        

UNION ALL

Select P.Path, D.Filename, D.DocumentID as DID, X1.DocumentID, AD.Level+1
       From XRefs X1, Documents D, Projects P, DocumentsInProjects DIP
  
INNER JOIN AllDoc as AD ON X1.DocumentID = AD.DID

)

Select *
From AllDoc
Where Level <=5


Ich will damit alle Baugruppen / Teile abfragen, die in meiner Ausgangsbaugruppe enthalten sind.
Und das bis hin zur letzten Ebene. Nachtrag: Die Abfrage für die erste Ebene funktioniert problemlos.

Beim Inner-Join bekomme ich einen Fehler. "X1.DocumentID" mehrteiliger Bezeichner konnte nicht gebunden werden.

Weiß jemand Rat. Ich komme hier nicht weiter!


------------------
Gruß,
Markus

[Diese Nachricht wurde von magge84 am 05. Mrz. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Prozessingenieur (w/m/d) Medizintechnik

CeramTec ist ein führender Entwickler und global aktiver Hersteller und Lieferant von Spezial­lösungen aus Hoch­leistungs­keramik mit mehr als 3.400 Mitarbeitern.

Unsere Lösungen sind welt­weit im Fahr­zeug- und Maschinen­bau, in der Medizin­technik, der Elektronik, der Luft- und Raum­fahrt­technik und der Energie- und Umwelt­technik im Einsatz. Willkommen bei den Keramik-Experten.

Für ...

Anzeige ansehenProzessmanagement
magge84
Mitglied
Dipl.-Ing. (Entwicklung)


Sehen Sie sich das Profil von magge84 an!   Senden Sie eine Private Message an magge84  Schreiben Sie einen Gästebucheintrag für magge84

Beiträge: 66
Registriert: 04.09.2008

Solid Works 2018 + PDM
Windows 10 64-bit
HP Z-Book
Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
NVIDIA Quadro M3000M

erstellt am: 14. Mrz. 2018 08:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

mit etwas probieren und recherchieren habe ich die rekursive SQL-Abfrage selber hinbekommen.

Hier der Code, für alle die ein ähnliches Problem haben. Hoffe es hilft weiter.

Code:

With AllDoc (Path, Filename, DID, Level)
As
(
Select Distinct P.Path, D.Filename, D.DocumentID as DID, 1 as Level
      From Documents D
Inner Join XRefs As X ON D.DocumentID = X.XRefDocument
Inner Join DocumentsInProjects As DIP ON D.DocumentID = DIP.DocumentID
Inner Join Projects As P ON DIP.ProjectID = P.ProjectID
Inner Join VariableValue AS VV ON D.DocumentID = VV.DocumentID
      Where X.DocumentID = (Select DocumentID From Documents Where Filename = '00000076.sldasm')
and D.Deleted = 0   
and X.RevNr = (Select Max(VV1.RevisionNo) --Nur Kinder der aktuellsten Version listen
From VariableValue VV1, Documents D
Where VV1.DocumentID = D.DocumentID
and D.DocumentID = (Select DocumentID From Documents Where Filename = '00000076.sldasm')) 

UNION ALL

Select P1.Path, D1.Filename, D1.DocumentID as DID, AD.Level + 1
      From Documents D1
Inner Join XRefs As X1 ON D1.DocumentID = X1.XRefDocument
Inner Join DocumentsInProjects As DIP1 ON D1.DocumentID = DIP1.DocumentID
Inner Join Projects As P1 ON DIP1.ProjectID = P1.ProjectID
Inner Join AllDoc As AD ON X1.DocumentID = AD.DID

)

Select *
From AllDoc AD
Where AD.Filename like '%.sld%'
OPTION (MAXRECURSION 100)


Bei Fragen dazu, einfach melden. Vielleicht kann ich helfen. 

------------------
Gruß,
Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz