Unterprojekte verbinden

SYLMZ

Neuer Benutzer
Beiträge
1
Hallo zusammen,

ich weiß wirklich nicht mehr weiter :(

Ich beziehe meine Daten aus zwei Datebanken und will das diese miteinander verbunden werden. Es klappt eigentlich schon, nur werden Daten mit Unterprojekten doppelt angezeigt, zeige ich euch im folgenden.

Die Daten sehen wie folgt aus:
Documentarchivenumber: "Project 1234567"
Jobnumber: "1234567"
Projekte mit Unterprojekten werden so agespeichert:
Documentarchivenumber: "Project 1234567-01"
Jobnumber: "1234567-01"​

Code:
Select   
        EXJOB.JOBNUMBER
        ,EXJOB.STATUS
        ,EXDOC.DOCUMENTARCHIVENUMBER
        ,EXDOC.DOCUMENTNAME
FROM    dbo.EXJOBHEADER EXJOB
FULL Outer Join EXDOCUMENTREVISION EXDOC ON SUBSTRING(EXJOB.JOBNUMBER,1,7) like SUBSTRING(EXDOC.DOCUMENTARCHIVENUMBER,9,7)

Das Problem ist hierbei aber, das dann jedes Unterprojekt mit allen anderen Projekten mit der selben Projektnummer verbunden wird.
Ich hätte gerne dass es nur einmal verbunden wird, und nicht dass die gleiche verknüpfung zum Teil 17 mal angezeigt wird.

Ich hoffe jemand kann mir weiter helfen :confused:

Gruß
Serkan
 
Werbung:
ich bin mir nicht sicher, ob ich Dein Problem richtig verstanden habe, ein paar Beispieldaten und gewünschtes Resultat wäre hilfreich.

Code:
test=*# select * from job;
 jobnumber  
------------
 1234567
 1234567-01
 1234567-02
(3 rows)

test=*# select * from doc;
 documentarchivenumber
-----------------------
 Project 1234567
 Project 1234567-01
 Project 1234567-02
(3 rows)

test=*# select distinct on (job.jobnumber) job.jobnumber, doc.documentarchivenumber from job full outer join doc on substring(job.jobnumber,1,7) = substring(doc.DOCUMENTARCHIVENUMBER, 9,7);
 jobnumber  | documentarchivenumber
------------+-----------------------
 1234567    | Project 1234567
 1234567-01 | Project 1234567
 1234567-02 | Project 1234567
(3 rows)

test=*#

Der JOIN dürfte recht teuer sein bei größeren Datenmengen, und ja, das ganze Datenmodell sieht vermurkst aus.
 
Werbung:
Erstmal gehört das LIKE da weg. Es fehlen zwar die %-Zeichen die es erst weitere Treffer ermöglichen würden aber ein = ist hier natürlich angebracht.

Nach meinem Verständnis ist ebenso SUBSTRING(EXJOB.JOBNUMBER,1,7) überflüssig. Die Spalte dürfte ja nur 7-Stellen haben. Vermutlich gibt es in dem Datenmodell noch einen besseren Fremdschlüssel der z.B. exakt die JOBNUMBER auch in der Untertabelle speichert, es wäre wünschenswert. Wenn nicht solltest du auf etwas joinen wie
EXJOB.JOBNUMBER = left(EXDOC.DOCUMENTARCHIVENUMBER,charindex('-',EXDOC.DOCUMENTARCHIVENUMBER)-1)

Und dann liegt das in der Natur der Sache das ein Join mit 17 Datensätzen in der Untertabelle auch 17 Zeilen liefert. Was ist denn das Ziel? Sollen die Infos aggregiert werden? Dazu musst du schon genauer werden.
 
Zurück
Oben