MSSQL Server und Meldung 102 Falsche Syntax in der Nähe von ")".

LauraM

Ensign
Registriert
Nov. 2019
Beiträge
133
Hallo,
ich habe 1 Tabelle, ich möchte dir mit join verknüpfen, aber bekomme ich einen Fehler mit Sytax 102 und ich weiss es nicht, wie ich vorgehen soll:

Code:
select farbe as 'v1:farbe'
from tab
left join
( select 'artikel' as '@logicalName', gebiet as '@key'
from tab
)
Un genau auf letzte Zeile bekomme ich Meldung mit Syntax 'Falsche Syntax in der Nähe von ")".'
Kann mir jemand sagen, woran liegt das?

Viele Grüße
 
Naja, bei einem Join muss du ihm auch sagen, welche 2 Spalten er verbinden soll:

left join ( Ergebnistabelle) on Spalte_alt = Spalte_neu

Oder so ähnlich. Ergebnistabelle ist die Abkürzung für deinen Select in den Klammern, der gibt ja eine Tabelle zurück.
 
  • Gefällt mir
Reaktionen: Rego, Raijin und AwesomSTUFF
Hi, danke, aber die Abfrage ist an sich in Ordnung, es fehlt ein Bedingung. Hier habe ich was ähnliches und anscheind es funktioniert: https://docs.microsoft.com/de-de/sq.../performance/subqueries?view=sql-server-ver15

Es fehlt bei mir eine Bedingung, aber ich weiss es nicht was. Anscheind kein Komma oder so, da ich schon alles ausprobiert habe. Wenn ich left join mache mit on Spalte, dann bekomme ich noch mehr meldungen.
Die Daten kommen aus eine Tabelle nur.

Danke für deine Mühe!
 
In deinem verlinkten Beispiel ist aber eine Verknüpfung (WHERE) zum Hauptselect drin, das fehlt bei dir komplett … und ein join ist gar nicht drin ...
 
In dem verlinkten Beispiel kommt überhaupt kein JOIN vor ...
 
  • Gefällt mir
Reaktionen: pcBauer
Join vereinigt zwei (Teil)Mengen, gebunden an Bedingungen. Ich bin mir nicht sicher, was exakt du als Ergebnis haben möchtest. Tippe aber mal du benötigst kein Join.
 
LauraM schrieb:
Un genau auf letzte Zeile bekomme ich Meldung mit Syntax 'Falsche Syntax in der Nähe von ")".'
Kann mir jemand sagen, woran liegt das?
Also, auf diese konkrete Frage hat @d2boxSteve die korrekte und ebenso konkrete Antwort gegeben:
d2boxSteve schrieb:
Naja, bei einem Join muss du ihm auch sagen, welche 2 Spalten er verbinden soll:

left join ( Ergebnistabelle) on Spalte_alt = Spalte_neu

Ob dein SELECT-Statement nun aber das tut was du willst, können wir nicht beurteilen. Deine Frage war was die Ursache für die Fehlermeldung war und der falsche Gebrauch von JOIN ist diese Ursache. Wenn du näheres zu deinem SELECT-Statement als solchem wissen willst, musst du mehr Details liefern wie die Quelldaten aussehen und wie das Ergebnis aussehen soll.
 
Ich habe mir was anders überlegt, kann ich hier weiter mein Problem posten, oder muss ich neues beginnen?

Gut, ich wollte die Verknüpfung machen um schauen, ob ich daraus eine gewünschte xml bekomme. Nun habe ich heute was getestet und bin ich zu folgendes gekommen:
Ich habe eine Tabelle mit paar Daten (einfache Tabelle).
Ich mache eine Abfrage auf die Tabelle und bekomme ich gewünschtes Ergebnis:
Code:
select
    tab.id as '@id',
    'farben' as '@type,
          colour as 'v1:colour',
     
    'gruppe' as '@logicalName'
            ,artikel as '@key'
        
                    from tab

Als Ergebnis bekomme ich Tabelle mit gewünschten Daten.
Nun möchte ich aus der Abfrage eine xml erstellen, die so aussehen sollte:

Code:
<v1:farben xmlns:v1="v3.test.com' as commons.com" xmlns:commons="'v1.farben.com' as v1">
  <v1:farbe id="01" type ="test">
  <v1:colour> gelb </v1>
  <v1:zusaetze>
        <v1:zusatz LogicalNAme="gruppe" key="20">  </v1zusatz>
  </v1:zusatze>
</v1:farbe>
</v1:farben>

Ich mache die Abfrage:
Code:
DECLARE @xml XML
WITH XMLNAMESPACES (
'v3.test.com' as commons.com,
'v1.farben.com' as v1)
select
    tab.id as '@id',
    'farben' as '@type,
          colour as 'v1:colour',
     
    'gruppe' as '@logicalName'
            ,artikel as '@key'
        
                    from tab
FOR XML PATH('v1:farbe'), ROOT('v1:farben')

Aber bekomme ich Meldung:


Was ist in meine XML Abfrage falsch? Ich bitte euch sehr um Antworte.

Viele Grüße
 
Zuletzt bearbeitet:
Mach das doch nicht in SQL. Welche Programmiersprache nutzt denn deine Anwendung? Es wird so ziemlich für alle Sprachen entsprechende Klassen geben, die den Umgang mit XML simpel machen.
 
@T.Smith : Nicht nachfragen, das Thema ist buchstäblich schon in ein Dutzend Threads angesprochen worden.
 
  • Gefällt mir
Reaktionen: Drexel
@Raijin, ein paar der anderen Threads kamen mir auch direkt bekannt vor. Aber nun gut, sie scheint zumindest iwie voran zu kommen, es ist ja nicht immer dieselbe Frage. Finde es durchaus berechtigt zu fragen, wieso an dieser Stelle SQL zum Einsatz kommen soll.

Ansonsten sehe ich in der XML in Zeile 6 einen Tippfehler, dadurch wird das eine Element nicht geschlossen und dann ist die Struktur der XML eben hin. Nach einem opening tag muss auch ein closed folgen.
 
  • Gefällt mir
Reaktionen: areiland
Poati schrieb:
Ansonsten sehe ich in der XML in Zeile 6 einen Tippfehler, dadurch wird das eine Element nicht geschlossen und dann ist die Struktur der XML eben hin. Nach einem opening tag muss auch ein closed folgen.
naja, aber das ist nur die gewuenschte Ausgabe XML, ich sehe nicht wie das helfen sollte. Das XML soll ja aus der DB generiert werden. Wenn du danach gehst sind uebrigens auch in Zeile 3 und 5 die schliessenden Tags falsch, aber das loest wohl kaum das Problem hier ...
 
  • Gefällt mir
Reaktionen: Poati
Guten Morgen,
ich bin echt ohne Rat. Vielen Dank für die bisherige Meldungen. Wenn ich die Abfrage mache:
Code:
DECLARE @xml XML
WITH XMLNAMESPACES (
'v3.test.com' as commons.com,
'v1.farben.com' as v1)
select
    tab.id as '@id',
    'farben' as '@type,
          --colour as 'v1:colour',
      
    'gruppe' as '@logicalName'
            ,artikel as '@key'
         
                    from tab
FOR XML PATH('v1:farbe'), ROOT('v1:farben')

Dann es funktioniert, da die gruppe und artikel gehören zu der obiegen Abfrage. Ich habe hier das gefunden, ähnliche Sitautionen, aber finde ich keine richtige Formulierung für meine Abfrage:
https://docs.microsoft.com/de-de/sq...xml/columns-with-a-name?view=sql-server-ver15

Hat jemand von euch noch eine Idee? Bzw. acuh wenn meine Abfrage falsch gedacht ist, ich brauche die Lösung, wie ich oben geschrieben habe aus eine einfache Tabelle.

Viele Grüße!
 
Zurück
Oben