Methode verbessern? Was ist wie möglich?

Hallo zusammen,

meine Aufgabe war es, zu 18 verschiedenen Lieferanten 15 unterschiedliche Rechnungen aus eine MSSQL 2005 DB zu ziehen.
Diese Rechnungen sind in einem Bestimmten Format abgelegt. In der Datenbank kann ich anhand eines bestimmten Rechnungsschlüssels Dateipfad und Dateiname herausfinden.

Um diese Rechnungsschlüssels zu erhalten waren meine Arbeitsschritte wie folgt:

SELECT doc_id, supplier_num from docs where supplier_num = 72714
OR supplier_num = 73149
[…]
OR supplier_num = 71904 ORDER by supplier_num

Hier schon die erste Frage: Ich bekam nat. viel mehr Ergebnisse wie ich wollte. Vom Prinzip hätten mir von jedem „Supplier“ die ersten 15 oder irgendwelche 15 Rechnungsschlüssels gereicht.

Ich hatte sie nun alle. Das Ergebnis habe ich mir nach Excel kopiert und mit einem Filter auf die Supplier (5 stellig) versehen. So konnte ich jetzt 15 Rechnungen manuell heraus kopieren. Das Ergebnis hab ich in einen weiteren Excel Sheet kopiert.
Ergebisse sahen in etwa so aus:
021AFE88A06141D4B6D41DF0A3A0ACC5 71107

0031C2D358A044129EE379F1166F4591 71190

01D0F34CE1DF42E7993D7448A01373DA 71207

150DC0E2A7D549EC82268F8AD6A850F5 71107

006068F66B4E42AA9EA0C716CDB945A1 71190

164CBECA918A4D33819370520233A45D 71207

[…] 71107 […] 71190 […] 71207

In einer anderen Tabelle kann ich anhand der Schlüssel (32 Stellen) den Dateinamen und Pfad erfragen. Das habe ich auch wieder für alle 18 Supplier manuell machen müssen. Dabei ist jedesmal folgendes Statement anzupassen:

select doc_id, file_resource, doc_file from doc_files where doc_id in
(‚021AFE88A06141D4B6D41DF0A3A0ACC5‘,
[…]
‚7667F864EE394B3D9C9AE306096BBF35‘);

Ich brauchte unbedinngt alle Ergebnisse pro Supplier separat.

Einzelne Ergebnisse sahen so aus:
078F3CCE81054D3C99D77BD33BBEF0B7 \dc6\Server\Image\2008\09\02\
00001CC1_1
078F3CCE81054D3C99D77BD33BBEF0B7 \dc6\Server\Image\2008\09\02\
00001CC1_2
[…]

usw.
Das habe ich wieder aus der Datenbank heraus nach Excel kopiert. Dort habe ich mit der Formel „=CONCATENATE(B17;C17;".tif")“ Pfad und Namen verkettet.

Das scheint mir ziemlich umständlich. Ich wäre froh wenn mir jemand dafür einen Ansatz für einen leichteren Weg liefern könnte. Es wäre ja schon mal super, wenn ich Excel weglassen könnte und das ganze in einer virtuelle Tabelle bearbeiten kann.
SQL technisch bin ich bisher eher ein Noob J Aber ich bin gewillt mein weniges Wissen auszubauen.

Vielen Dank für euren Hirnschmalz.

Beste Grüße, olli

Hallo zusammen,

meine Aufgabe war es, zu 18 verschiedenen Lieferanten 15
unterschiedliche Rechnungen aus eine MSSQL 2005 DB zu ziehen.
Diese Rechnungen sind in einem Bestimmten Format abgelegt. In
der Datenbank kann ich anhand eines bestimmten
Rechnungsschlüssels Dateipfad und Dateiname herausfinden.

Um diese Rechnungsschlüssels zu erhalten waren meine
Arbeitsschritte wie folgt:

SELECT doc_id, supplier_num from docs where
supplier_num = 72714
OR supplier_num = 73149
[…]
OR supplier_num = 71904 ORDER by supplier_num

bau dir doch einfach eine neue tabelle , von mir aus erstmal eine tablle mit den gesuchten supplier_num

INSERT INTO tableDOCIDS SELECT ‚‘,docus.doc_id , docus.supplier_num from docs as docus, tblsuppliernummern as supnr where supnr.supplier_num = docus.supplier_num GROUP by supplier_num ORDER by supplier_num

Hier schon die erste Frage: Ich bekam nat. viel mehr
Ergebnisse wie ich wollte. Vom Prinzip hätten mir von jedem
„Supplier“ die ersten 15 oder irgendwelche 15
Rechnungsschlüssels gereicht.

sollte mit GROUP gehen

Ich hatte sie nun alle. Das Ergebnis habe ich mir nach Excel
kopiert und mit einem Filter auf die Supplier (5 stellig)
versehen. So konnte ich jetzt 15 Rechnungen manuell heraus
kopieren. Das Ergebnis hab ich in einen weiteren Excel Sheet
kopiert.
Ergebisse sahen in etwa so aus:
021AFE88A06141D4B6D41DF0A3A0ACC5 71107

0031C2D358A044129EE379F1166F4591 71190

01D0F34CE1DF42E7993D7448A01373DA 71207

150DC0E2A7D549EC82268F8AD6A850F5 71107

006068F66B4E42AA9EA0C716CDB945A1 71190

164CBECA918A4D33819370520233A45D 71207

[…] 71107 […] 71190 […] 71207

In einer anderen Tabelle kann ich anhand der Schlüssel (32
Stellen) den Dateinamen und Pfad erfragen. Das habe ich auch
wieder für alle 18 Supplier manuell machen müssen. Dabei ist
jedesmal folgendes Statement anzupassen:

Insert into tablefilepath select ‚‘,docfile.doc_id, docfile.file_resource, docfile.doc_file from doc_files as docfile, tableDOCIDS as tempdocid where docfile.doc_id=tempdocid.doc_id

doc_id

select doc_id, file_resource, doc_file from doc_files where
doc_id in
(‚021AFE88A06141D4B6D41DF0A3A0ACC5‘,
[…]
‚7667F864EE394B3D9C9AE306096BBF35‘);

Ich brauchte unbedinngt alle Ergebnisse pro Supplier separat.

Einzelne Ergebnisse sahen so aus:
078F3CCE81054D3C99D77BD33BBEF0B7 \dc6\Server\Image\2008\09\02\
00001CC1_1
078F3CCE81054D3C99D77BD33BBEF0B7 \dc6\Server\Image\2008\09\02\
00001CC1_2
[…]

select CONCAT(’\dc6\Server\Image\2008\09\02’,doc_file,’.tif’) from tablefilepath

usw.
Das habe ich wieder aus der Datenbank heraus nach Excel
kopiert. Dort habe ich mit der Formel
„=CONCATENATE(B17;C17;".tif")“ Pfad und Namen verkettet.

wat auch mmer nun B17 und C17 sind, echt hilfreich , aber wirklich.

Das scheint mir ziemlich umständlich. Ich wäre froh wenn mir
jemand dafür einen Ansatz für einen leichteren Weg liefern
könnte. Es wäre ja schon mal super, wenn ich Excel weglassen
könnte und das ganze in einer virtuelle Tabelle bearbeiten
kann.
SQL technisch bin ich bisher eher ein Noob J Aber ich bin
gewillt mein weniges Wissen auszubauen.

wie gesagt arbeite mit INSERT SELECT und mach dir zwischentabellen,
wichtig auch GROUP funktion zum zusammenfassen von gleichen werten.

Vielen Dank für euren Hirnschmalz.

Beste Grüße, olli