Jump to content

Zusammenführen zweier Abfragen


Direkt zur Lösung Gelöst von ukulele,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich würde gerne folgende Abfragen zu einer Abfrage zusammenführen:

 

Abfrage a)

SELECT VBSVORDT, VBSVORZT, VBSARTTX, VBSHNDKL, VBSURSLD, VBSPALMG, VBSPMENG, VBSFPMNG,  VBSLGANR, arttx, VBSKUNNR, KUNNAME, VBSFOLNR, VBSFOLET, VBSKISZT, VBSECKL, VBSSANID, VBSSANKI FROM tbl_VBS
join tbl_KUN on tbl_kun.KUNNR = tbl_vbs.VBSKUNNR
join tbl_ART on tbl_art.ARTNR = tbl_vbs.VBSLGANR
 where VBSADRNR = '005256' AND  
convert(datetime,convert(char(10),VBSVORDT,104)) between convert(datetime,convert(char(10),getdate(),104)) and dateadd(dd,0,getdate())

 

Abfrage B)

SELECT PARLFD2 as FolNr, PARINHA1 as FolTxt FROM view_PAR where KEYIPAR1 like 'EVARFFOLIENNUMMER%'

 

Wie stelle ich das sinnvoll an?

 

Danke für Eure Hilfe!

 

karkenau

Link zu diesem Kommentar

Die Gemeinsamkeit ist folgende:

 

In der zweiten Tabelle der zweiten Abfrage gibt es eine Spalte, die da heißt PARLFD2 welcher der Spalte VBSFOLET aus der ersten Abfrage entspricht. Ich hatte schon mal versucht die beiden mit JOIN zusammenzubringen, bin aber daran gescheitert, das nicht jede Zeile verwendet werden darf, sondern nur jene, welche die Bezeichnung "EVARFFOLIENNUMMER%" in der Spalte "KEYIPAR1" tragen.

 

Hilft das weiter?

Link zu diesem Kommentar

Also so der join so?

 

join tbl_par on tbl_par.parlfd2 = tbl_vbs.VBSFOLET

 

und das where dann in den SELECT?

 

Sorry für die Anfängerfrage, aber ich arbeite nicht jeden Tag mit MSSQL.

 


Ok, ich habe es jetzt wie folgt gelöst:

 

join tbl_par on tbl_par.parlfd2 = tbl_vbs.VBSFOLET
where KEYIPAR1 like 'EVARFFOLIENETIKET%'

 

aber was mach ich wenn ich im Feld tbl_par.parlfd2 noch Werte haben, die im Feld "KEYIPAR1 mit "EVARFFOLIENNUMMER%" als Schlüssel haben?

bearbeitet von karkenau
Link zu diesem Kommentar

... die im Feld "KEYIPAR1 mit "EVARFFOLIENNUMMER%" als Schlüssel haben? ...

 

einfach ein     

OR KEYIPAR1 like 'EVARFFOLIENNUMMER%'

anhängen (OR, AND, siehe Onlinehilfe):

join tbl_par on tbl_par.parlfd2 = tbl_vbs.VBSFOLET

where KEYIPAR1 like 'EVARFFOLIENETIKET%'
OR KEYIPAR1 like 'EVARFFOLIENNUMMER%'

Sollte allerdings 'EVARFFOLIENNUMMER%' eine feste Zeichenkette sein, so solltest Du  statt "like" lieber "=" benutzen ("like" funktioniert hier aber auch).

 

Gruß Kai

Link zu diesem Kommentar

Ok, ich habe jetzt diese Abfrage gebastelt:

 

SELECT  VBSFOLNR, PARINHA1,VBSFOLET,PARINHA1 FROM tbl_VBS
join tbl_par on tbl_par.parlfd2 = tbl_vbs.VBSFOLNR
  where KEYIPAR1 like 'EVARFFOLIENETIKET%' 
union SELECT  VBSFOLNR, PARINHA1,VBSFOLET,PARINHA1 FROM tbl_VBS
join tbl_par on tbl_par.parlfd2 = tbl_vbs.VBSFOLET
where KEYIPAR1 like 'EVARFFOLIENETIKET%' 

 

Sie funktioniert auch, zeigt mir im Feld PARINHA1 jedoch zweimal das gleiche Ergebnis, was jedoch nicht das ist, was ich möchte, sondern in möchte beim ersten PARINHA1 das haben, was unter "EVARFFOLIENETIKET%" steht und beim zweiten PARINHA1 das was unter "EVARFFOLIENETIKET%" steht.

 

Geht das auch irgendwie?

Link zu diesem Kommentar
  • 2 Wochen später...

Das sieht von der Struktur her schonmal gut aus.

 

Nur als Tipp:

 

- Betrachte jedes SELECT Statement für sich und bewerte das Ergebenis

 

- kontrolliere nochmal den JOIN (evtl. Copy-Paste Fehler)

 

- kommen die Daten aus der jeweils richtigen Spalte

 

- kontrolliere den WHERE String, oben hast du noch von 'EVARFFOLIENNUMMER%' gesprochen, der taucht hier aber nicht mehr auf.

 

Gruß Kai

bearbeitet von hh2000
Link zu diesem Kommentar

Du hast natürlich recht, klarer Tippfehler von mir...die Abfrage hätte so aussehen müssen:

 

SELECT  VBSFOLNR, PARINHA1,VBSFOLET,PARINHA1 FROM tbl_VBS
join tbl_par on tbl_par.parlfd2 = tbl_vbs.VBSFOLNR
  where KEYIPAR1 like 'EVARFFOLIENNUMMER%'
union SELECT  VBSFOLNR, PARINHA1,VBSFOLET,PARINHA1 FROM tbl_VBS
join tbl_par on tbl_par.parlfd2 = tbl_vbs.VBSFOLET
where KEYIPAR1 like 'EVARFFOLIENETIKET%'

 

Aber auch diese Abfrage bringt mir leider nicht das Ergebnis das ich erwarte...in beiden Feldern PARINHA1 steht das gleiche Ergebnis, was aber nicht sein kann, weil natürlich bei EVARFFOLIENETIKET% etwas anderes drin steht als bei EVARFFOLIENNUMMER%.

 

Gibt es noch Ideen?

Link zu diesem Kommentar
  • 2 Wochen später...

Also ich verstehe den Thread nur in etwa bis Post #4, ich glaube du suchst das:

SELECT    VBSVORDT,
        VBSVORZT,
        VBSARTTX,
        VBSHNDKL,
        VBSURSLD,
        VBSPALMG,
        VBSPMENG,
        VBSFPMNG,
        VBSLGANR,
        arttx,
        VBSKUNNR,
        KUNNAME,
        VBSFOLNR,
        VBSFOLET,
        VBSKISZT,
        VBSECKL,
        VBSSANID,
        VBSSANKI,
        PARLFD2 AS FolNr,
        PARINHA1 AS FolTxt
FROM    tbl_VBS
JOIN    tbl_KUN
ON        tbl_kun.KUNNR = tbl_vbs.VBSKUNNR
JOIN    tbl_ART
ON        tbl_art.ARTNR = tbl_vbs.VBSLGANR
LEFT JOIN view_PAR
ON        VBSFOLET = view_PAR.PARLFD2
AND        view_PAR.KEYIPAR1 LIKE 'EVARFFOLIENNUMMER%'
WHERE    VBSADRNR = '005256'
AND        convert(datetime,convert(char(10),VBSVORDT,104)) BETWEEN convert(datetime,convert(char(10),getdate(),104)) AND dateadd(dd,0,getdate())

bearbeitet von ukulele
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...