Zum Inhalt wechseln


Foto

Zusammenführen zweier Abfragen


  • Bitte melde dich an um zu Antworten
26 Antworten in diesem Thema

#1 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 08. September 2015 - 13:39

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



#2 zahni

zahni

    Expert Member

  • 16.520 Beiträge

 

Geschrieben 08. September 2015 - 13:44

Keine Ahnung.

Anhand der  Abfragen kann man keine Gemeinsamkeit  erkennen. Wenn Du eine findest: JOIN ist  Dein Freund.


Wen du nicht mit Können beeindrucken kannst, den verwirre mit Schwachsinn!


#3 Sunny61

Sunny61

    Expert Member

  • 22.248 Beiträge

 

Geschrieben 08. September 2015 - 14:55

Die zweite Abfrage basiert wohl auf einer View, da mußt Du an die View ran und schauen ob Du das mit in die erste Abfrage kriegst.
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#4 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 09. September 2015 - 13:55

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?



#5 zahni

zahni

    Expert Member

  • 16.520 Beiträge

 

Geschrieben 09. September 2015 - 15:19

Wenn Du PARLFD2  mit VBSFOLET  gejoined hats, kannst Du doch immer noch ein Where mit "EVARFFOLIENNUMMER%"   anhängen...


Wen du nicht mit Können beeindrucken kannst, den verwirre mit Schwachsinn!


#6 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 10. September 2015 - 07:22

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, 10. September 2015 - 07:13.


#7 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 15. September 2015 - 13:45

Niemand ne Idee?



#8 hh2000

hh2000

    Board Veteran

  • 550 Beiträge

 

Geschrieben 15. September 2015 - 17:34


... 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



#9 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 16. September 2015 - 06:34

Guten Morgen,

 

aber was mache ich, wenn KEYIPAR1 like 'EVARFFOLIENNUMMER%' ist, das aber im Join nicht "tbl_vbs.VBSFOLET passt sondern dann zu "tbl_vbs.VBSFOLNR" gehören müsste?



#10 hh2000

hh2000

    Board Veteran

  • 550 Beiträge

 

Geschrieben 16. September 2015 - 11:59

Moin,

 

z.B. eine zweite Abfrage (mit anderem JOIN) mit gleichem Spaltenlayout machen und beide Abfragen dann mit UNION (siehe Onlinehilfe) verknüpfen.

​Gruß Kai



#11 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 16. September 2015 - 13:41

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?



#12 hh2000

hh2000

    Board Veteran

  • 550 Beiträge

 

Geschrieben 26. September 2015 - 10:46

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, 26. September 2015 - 10:47.


#13 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 28. September 2015 - 09:40

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?



#14 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 30. September 2015 - 08:37

Keine Idee irgendjemand?



#15 ukulele

ukulele

    Newbie

  • 68 Beiträge

 

Geschrieben 09. Oktober 2015 - 05:51

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, 09. Oktober 2015 - 05:51.