Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Interbase SQL: Invalid Command. Data type unknown on line 1.

Empfohlene Antworten

Was ist an folgender SQL Anweisung falsch? Ich finde einfach keinen Fehler. Wenn ich den ersten Block wegmache, ist der Fehler laut Meldung übrigens immer noch in Zeile 1.

select Datum, Stunden, 0 Ausfallstunden

from az_taeglich

where PERS_ID= 4

UNION ALL

select Ausfalltag, 0.0 Arbeitsstunden, Ausfallstunden

from Ausfallzeiten

where PERS_ID= 4

UNION ALL

select Datum, 0.0 Arbeitsstunden, 7 Ausfallstunden

from Feiertage

where Ausfallstunden = 8

UNION ALL

select Datum, 0.0 Arbeitsstunden, 3.5 Ausfallstunden

from Feiertage

where Ausfallstunden = 4

Semikolon hinten dran?

JayN

Wenn ich hinter jede WHERE Bedingung ein Semikolon mache, dann kommt folgender Fehler:

Parsing Error Invalid statement on line 5: UNION ALL

Der Fehler liegt in folgender Anweisung:

select Ausfalltag, 0.0 Arbeitsstunden, Ausfallstunden

from Ausfallzeiten

where PERS_ID= 4;

Das Feld wurde wie folgt angelegt:

Ausfallstunden integer not null

Original geschrieben von King555

Wenn ich hinter jede WHERE Bedingung ein Semikolon mache, dann kommt folgender Fehler:

Parsing Error Invalid statement on line 5: UNION ALL

Der Fehler liegt in folgender Anweisung:

select Ausfalltag, 0.0 Arbeitsstunden, Ausfallstunden

from Ausfallzeiten

where PERS_ID= 4;

Nicht hinter jede, sondern nur hinter die letzte...

JayN

Dann kommt wieder folgende Fehlermeldung:

Dynamic SQL Error

SQL error code = -104

Invalid Command

Data type unknown on line 1 : select Datum, Stunden, 0 Ausfallstunden

from az_taeglich

where PERS_ID= 4

UNION ALL

select Ausfalltag, 0 Arbeitsstunden, Ausfallstunden

from Ausfallzeiten

where PERS_ID= 4

UNION ALL

select Datum, 0 Arbeitsstunden, 7 Ausfallstunden

from Feiertage

where Ausfallstunden = 8

UNION ALL

select Datum, 0 Arbeitsstunden, 3.5 Ausfallstunden

from Feiertage

where Ausfallstunden = 4

Könntest Du vielleicht die Tabellen-/Datenbankstruktur mit den jeweiligen Datentypen mal posten?

JayN

Wenn ich mehrere Tabellen mit UNION ALL zusammenführen möchte, müssen alle Felder der Tabellen doch gleich sein (oder nicht?). Da die Tabelle mit den Arbeitsstunden ja keine Ausfallstunden enthält (und andersrum), muss ich da halt als Default Wert 0 nehmen.

Als ich das mit den Feiertagen (die zwei Blöcke unten) noch nicht hatte, hat es übrigens noch bestens funktioniert!

Hier die Tabellen:

create table Ausfallzeiten (

ID integer not null,

Pers_ID integer not null,

Grund varchar(20) not null,

Ausfalltag date not null,

Ausfallstunden integer not null,

primary key (ID)

);

create table Arbeitsaufwand (

ID integer not null,

Pers_ID integer not null,

Projekt_ID integer not null,

Taetigkeit_ID integer not null,

Kunden_ID integer,

Beschreibung varchar(255),

Datum date not null,

von char(5) not null,

bis char(5) not null,

Arbeitsanteil double precision not null,

Aufwand double precision not null,

Fakturiert double precision,

primary key (ID),

foreign key (Projekt_ID) references Projekte,

foreign key (Pers_ID) references Personen,

foreign key (Taetigkeit_ID) references Taetigkeitsarten

);

create table Feiertage (

Datum date not null,

Ausfallstunden integer not null,

Beschreibung varchar(20),

primary key (Datum)

);

Dann gibt's da noch eine View, die wurde so erstellt:

create view az_taeglich

(Pers_ID, Datum, Anfang, Ende, Stunden)

as

select Pers_ID, Datum, Min(von), Max(bis), Sum(Aufwand)

from Arbeitsaufwand

group by Pers_ID, Datum;

Ich habe immer noch keine Lösung gefunden, ihr ja scheinbar auch nicht. Daher poste ich jetzt nochmal was, was vielleicht bei einer Lösung des Problems hilft.

So sah die Anweisung aus, bevor ich was dran geändert habe, diese Anweisung funktionierte bestens:

select Datum, Stunden, 0 Ausfallstunden

from az_taeglich

where PERS_ID= 4

UNION ALL

select Ausfalltag, 0.0 Arbeitsstunden, Ausfallstunden

from Ausfallzeiten

where PERS_ID= 4

UNION ALL

select Datum, 0.0 Arbeitsstunden, Ausfallstunden

from Feiertage

Die aktuelle Anweisung habe ich ja bereits gepostet.

select Datum, 0.0 Arbeitsstunden, 7 Ausfallstunden

from Feiertage

where Ausfallstunden = 8

7 ausfallstunden

8 ausfallstunden

????

in einer anweisung????

mag sich da der fehler verstecken????

Original geschrieben von Darth_Zeus

7 ausfallstunden

8 ausfallstunden

????

in einer anweisung????

mag sich da der fehler verstecken????

Keine Ahnung, das frage ich ja euch.

Ich möchte überall da, wo eine "8" bei den Ausfallstunden steht, eine "7" einlesen. Das möchte ich erreichen. Diese Feiertagstabelle enthält nämlich für jeden Feiertag 8, bzw. 4 Ausfallstunden. Da ich aber nur 7 Stunden täglich arbeiten muss, würde durch die 8 meine Gesamtauswertung verfälscht. Daher möchte ich alle Datensätze mit Ausfallstunden = 8 als 7 Ausfallstunden einlesen.

Falls es so nicht geht, wie ich es gemacht habe, wie geht es dann?

Original geschrieben von Darth_Zeus

sags halt gleich..........

UPDATE Ausfallzeiten

SET Ausfallstunden = 7

WHERE Ausfallstunden = 8 AND Pers_ID = 4;

Fertig

So geht's nicht. Ich will ja nichts verändern in irgendwelchen Tabellen. Ich will nur eine Auswertung machen und dafür will ich überall da wo eine 8 steht eine 7 einlesen. Bei der Auswertung darf nichts an Daten verändert werden. Z.B. bei den Arbeitszeiten lese ich ja auch 0 Ausfallstunden ein, warum geht das in dem Fall nicht auch so ähnlich?

Ich hab's endlich geschafft! Es gab einen Konflikt zwischen zwei Datentypen, nämlich Integer und Float. So klappt die Anweisung:

select Datum, Stunden, 0 Ausfallstunden

from az_taeglich

where PERS_ID= 4

UNION ALL

select Ausfalltag, 0.0 Arbeitsstunden, Ausfallstunden

from Ausfallzeiten

where PERS_ID= 4

UNION ALL

select Datum, 0.0 Arbeitsstunden, 7 Ausfallstunden

from Feiertage

where Ausfallstunden = 8

UNION ALL

select Datum, 0.0 Arbeitsstunden, 3 Ausfallstunden

from Feiertage

where Ausfallstunden = 4;

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.