![]() |
Datenbank: MSSQL • Zugriff über: MSSQL
MSSQL Mehrfachabfrage
Hi,
die unten stehende SQL-Anweisungen liefert mir den Fehler: < Syntaxfehler beim Konvertieren des varchar-Wertes 'Verheiratet' in eine Spalte vom Datentyp int.>(Toad for SQL Server) Was mach ich hier falsch? Muss die Ergebnistabelle formatiert werden, wenn ja wie?? Schön wäre es auch, wenn ich die Ergebnisse in einer Zeile anstatt in einer Spalte zurückbekommen würde. Wie lässt sich das erreichen?
SQL-Code:
Vielen Dank
SELECT familienstand As famstand
FROM familienstand WHERE kunden_id = 1 AND von = (SELECT MAX(von) FROM familienstand WHERE kunden_id = 1) union select count(*) AS AnzVerträge from vertrag where kunden_id = 1 okoeller |
Re: MSSQL Mehrfachabfrage
familienstand ist kein int datentyp!
dein union gibt doch nur int zurück. entweder gibt dein union string zurück oder dein familienstand wird int. |
Re: MSSQL Mehrfachabfrage
Versteh ich das jetzt richtig: wenn ich
SQL-Code:
verwende bekomme ich Rückgabewerte nur in einem Format zurück, also string oder integer.
union
Da lässt sich nichts formatieren? okoeller |
Re: MSSQL Mehrfachabfrage
Ich denke, Du meinst eher so etwas:
SQL-Code:
[edit] Bei einer Union müssen die Teilergebnismengen datenkompatibel sein (z.B. davor und danach eine Integer und ein String) [/edit]
SELECT A.familienstand As famstand, COUNT(B.*) AS AnzVerträge
FROM familienstand A JOIN vertrag B ON B.kunden_id = A.kunden_id WHERE A.kunden_id = 1 AND A.von = (SELECT MAX(von) FROM familienstand WHERE kunden_id = 1) |
Re: MSSQL Mehrfachabfrage
Hallo DeddyH,
hab Deinen code mal getestet, bekomme aber folgende Fehlermeldung: Zeile 1: Falsche Syntax in der Nähe von '*'. Die Tabelle familienstand enthält die Felder: famstand_id, familienstand, von; die Tabelle vertrag enthält die Felder: vertrag_id, kunden_id, vertragsart, datum, dokument Ich möchte mit einer SQL Datei eine Abfrage über mehrere Tabellen hinweg durchführen. Dabei soll für einen bestimmten Kunden, der familienstand mit dem letzten Datum (Feld: von) aus der Tabelle familienstand und die Anzahl der Verträge aus der Tabelle vertrag geholt werden. okoeller |
Re: MSSQL Mehrfachabfrage
Dann versuch es mal mit COUNT(B.kunden_id)
[edit] Sry, habe ganz die Gruppierung vergessen.
SQL-Code:
[/edit]
SELECT A.familienstand As famstand, COUNT(B.kunden_id) AS AnzVerträge
FROM familienstand A JOIN vertrag B ON B.kunden_id = A.kunden_id WHERE A.kunden_id = 1 AND A.von = (SELECT MAX(von) FROM familienstand WHERE kunden_id = 1) GROUP BY A.familienstand [edit2] Wie sind die beiden Tabellen denn verknüpft? Ich kann auf den ersten Blick kein gemeinsames Schlüsselfeld entdecken. [/edit2] |
Re: MSSQL Mehrfachabfrage
Hi DeddyH,
sorry in der Tabelle familienstand gibt es natürlich auch die kunden_id. Mit der angefügten Gruppierung funktioniert es! Auch die zweite Anforderung mit der Darstellung in einer Zeile ist damit erfüllt. Ich versuch jetzt mal die anderen fehelnden 4 Abfragen einzubauen. Mein Verständnis für SQL Abfragen wächst dank dieses Forums jeden Tag. Erstmal vielen Dank okoeller |
Re: MSSQL Mehrfachabfrage
der Befehl Union fügt 2 gleiche Tabellen aneinander.
D.h. beide SQL-Statments müssen die gleiche Anzahl von Spalten haben und die Tabellen müssen jeweils in der gleichen Spalte den gleichen Datentyp haben. Die Namen der Spalten spielen keine Rolle. Die erste Tabelle gibt die Namen im Ergebnis an. |
Re: MSSQL Mehrfachabfrage
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz