Zum Inhalt wechseln


Foto

Hilfe bei Select

MS SQL

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

#1 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 17. Februar 2015 - 08:15

Hallo,

 

folgendes Szenario:

 

Ich führe in einer Tabelle ein Select über mehrere Spalten aus und möchte nun mehrere Spalten mit Spalten aus anderen Tabellen verbinden, die aber keine gleichgenannte Spalten haben, so das , wenn ich die Beschreibung richtig verstanden habe, kein JOIN möglich ist.

 

Was kann ich alternativ tun?

 

Vielen Dank für Eure Hilfe!!



#2 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 17. Februar 2015 - 08:29

Warum soll der JOIN nicht möglich sein?!?

 

Ein "ON Tabelle1.Feld1 = Tabelle2.AndererFeldname" geht doch


My name is Frank, you can say you to me.

#3 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 17. Februar 2015 - 09:22

Ja, klar...wer lesen kann ist klar im Vorteil...Danke Dir :-)



#4 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 01. April 2015 - 12:30

Ok, diese Abfrage läuft jetzt seit einiger Zeit völlig Problemlos..jetzt gibt es allerdings eine neue Anforderung und damit verbunden eine neue Frage ;-)

 

Ich möchte also in der Abfrage Daten aus einer Tabelle hinzufügen, die etwas anders aufgebaut ist (ich war das nicht, keine Sorge):

 

Und zwar brauche ich Daten, die als Schlüssel "Folie%" (das % ist ein Platzhalter für eine fortlaufende Nummer) haben und dann eine Nummer (die zu einer anderen Tabelle aus der Abfrage passen) und dann einen Beschreibung, die ich gerne in dieser Abfrage mit auswerfen würde.

 

Jemand eine Idee wie ich das anstellen kann?

 

Die einzelne Abfrage dazu lautet: SELECT LFD2 , INHA1  FROM view_fol where KEYIPAR1 like 'FOLIEN%'

 

Aber wie integriere ich das in die o.g. bestehende Abfrage, also per JOIN oder was auch immer es da gibt?

 

Danke nochmal!


Bearbeitet von karkenau, 01. April 2015 - 12:34.


#5 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 01. April 2015 - 13:32

das "FOLIE" davor einfach abschneiden ;)

 

den JOIN also etwa so:

ON Tabelle1.ID = SUBSTR(Tabelle2.Key, 6)

 

Ungeprüfte Anregung ;)


My name is Frank, you can say you to me.

#6 zahni

zahni

    Expert Member

  • 16.376 Beiträge

 

Geschrieben 01. April 2015 - 13:48

Vielleicht noch in Integer casten.

 

Ist aber gefährlich: Sollten dort mal keine Zahlen stehen, gibt es lustige Fehler.


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


#7 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 01. April 2015 - 13:54

Mag mir jemand den Vorschlag kurz erklären?



#8 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 01. April 2015 - 14:16

Das SUBSTR(Tabelle2.Key,6) soll aus einem "FOLIE1234" "1234" zurück liefern, damit es zu Deinem anderen Feld passt (in meinem Beispiel ID).

Zahnis CAST (z.B. CAST(SUBSTR(Tabelle2.Key,6) AS INT)) macht aus dem Substring ne Zahl. Wenn da nun in so einem Feld jedoch z.B. "FOLIE123XY" steht, bekommst nen Fehler.

 

Zu CAST und SUBSTR findest Du bei MSDN.microsoft.com gute Hilfe ;)


My name is Frank, you can say you to me.

#9 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 01. April 2015 - 14:51

Hab es gerade probiert und SQL Server 2008 sagt:

 

'substr' wird nicht als Name einer integrierten Funktion erkannt?



#10 Sunny61

Sunny61

    Expert Member

  • 22.090 Beiträge

 

Geschrieben 01. April 2015 - 15:04

Zeig doch dein komplettes Statement, dann sieht man evtl. mehr.
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#11 zahni

zahni

    Expert Member

  • 16.376 Beiträge

 

Geschrieben 01. April 2015 - 15:10

MS will es scheinbar genau  wissen und nennt die Funktion "SUBSTRING" ;)

 

https://msdn.microso...y/ms187748.aspx


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


#12 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 01. April 2015 - 16:00

Ok, das scheint soweit zu funzen....allerdings...das Folie darf nicht abgeschnitten werden, da es noch einen Schlüssel "Folienet??" (also Folienet mit zwei Zahlen) gibt, den ich von dem "Folien" Schlüssel unterscheiden muss.

 

Gibt es also noch eine andere Möglichkeit?



#13 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 02. April 2015 - 11:56

Jemand eine Idee?



#14 zahni

zahni

    Expert Member

  • 16.376 Beiträge

 

Geschrieben 02. April 2015 - 11:59

Da gibt dann die Case() Funktion.


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


#15 karkenau

karkenau

    Newbie

  • 94 Beiträge

 

Geschrieben 02. April 2015 - 14:13

Ok, also würde der Befehl dann lauten:

 

SELECT tabelle1, tabelle2 FROM tbl_vbs

INNER JOIN view_par

ON

CASE

     WHEN KEYIPAR1 like 'folien%' THEN parinha1

     WHEN KEYIPAR1 like 'folienet%" THEN PARINHA1

     ELSE NULL

END = par_view

 

Oder?





Auch mit einem oder mehreren der folgenden Tags versehen: MS SQL