Zum Inhalt springen

SQL-UNION Problem (dringend!)


__Flow__

Empfohlene Beiträge

Moinsen,

ich würd noch sehr viel schreiben, aber hab grad leider wenig Zeit um ne Lösung für folgendes Problem zu finden.

Wär klasse wenn ihr hier mal rüberschaut:

SELECT RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s) AS Name,

abwesenheiten.abwesendvon_d,

abwesenheiten.abwesendbis_d,

abwesenheiten.begruendung_s,

abwesenheiten.abwesenheit_id,

len(RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s)) AS Name_Laenge,

(DATEDIFF(day, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d)+1) AS 'Tage (insg.)' ,

(DATEDIFF(dd, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d) + 1)

-(DATEDIFF(wk, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d) * 2)

-(CASE WHEN DATENAME(dw, abwesenheiten.abwesendvon_d) = 'Sunday' THEN 1 ELSE 0 END)

-(CASE WHEN DATENAME(dw, abwesenheiten.abwesendbis_d) = 'Saturday' THEN 1 ELSE 0 END) AS 'Tage (ohne WE)',

'Urlaub' AS 'typ'

FROM abwesenheiten

LEFT JOIN mitarbeiter on abwesenheiten.mitarbeiter_s = (RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s))

UNION

SELECT bereitschaften.mitarbeiter_s,

bereitschaften.bereitschaftvon_dt,

bereitschaften.bereitschaftbis_dt,

bereitschaften.bemerkung_s,

bereitschaften.bereitschaft_id,

len(RTRIM(bereitschaften.mitarbeiter_s)) AS Name_Laenge,

bereitschaften.gepaufwand_n,

bereitschaften.tataufwand_n,

bereitschaften.bereitschaftstyp_s

FROM bereitschaften

WHERE 'Name' IN (SELECT tmp.string_s

FROM tmp

WHERE login_s = 'FBOETT');

Kurz gesagt:

Der erste Select holt mir alle Abwesenheiten und der zweite alle Bereitschaften.

Die WHERE-Clause ganz unten soll für das gesamte Statement gelten und mir alle Daten aus den mit UNION verbunden Tabellen geben in denen "mitarbeiter_s" gleich den Namen der in der unteren WHERE-CLAUSE selektiert wird.

Ich denke es ist nur ein Syntax-Fehler aber der Select ist für meine Verhältnisse schon ein bisschen "fetter" und bis jetzt hab ich noch keine Lösung.

Wär klasse wenn ihr helfen könntet ;-)

lg,

Flow

Link zu diesem Kommentar
Auf anderen Seiten teilen

Versuch mal bitte:

SELECT * FROM (SELECT RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s) AS Name,

abwesenheiten.abwesendvon_d,

abwesenheiten.abwesendbis_d,

abwesenheiten.begruendung_s,

abwesenheiten.abwesenheit_id,

len(RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s)) AS Name_Laenge,

(DATEDIFF(day, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d)+1) AS 'Tage (insg.)' ,

(DATEDIFF(dd, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d) + 1)

-(DATEDIFF(wk, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d) * 2)

-(CASE WHEN DATENAME(dw, abwesenheiten.abwesendvon_d) = 'Sunday' THEN 1 ELSE 0 END)

-(CASE WHEN DATENAME(dw, abwesenheiten.abwesendbis_d) = 'Saturday' THEN 1 ELSE 0 END) AS 'Tage (ohne WE)',

'Urlaub' AS 'typ'

FROM abwesenheiten

LEFT JOIN mitarbeiter on abwesenheiten.mitarbeiter_s = (RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s))

UNION

SELECT bereitschaften.mitarbeiter_s,

bereitschaften.bereitschaftvon_dt,

bereitschaften.bereitschaftbis_dt,

bereitschaften.bemerkung_s,

bereitschaften.bereitschaft_id,

len(RTRIM(bereitschaften.mitarbeiter_s)) AS Name_Laenge,

bereitschaften.gepaufwand_n,

bereitschaften.tataufwand_n,

bereitschaften.bereitschaftstyp_s

FROM bereitschaften)

WHERE 'Name' IN (SELECT tmp.string_s

FROM tmp

WHERE login_s = 'FBOETT');

Link zu diesem Kommentar
Auf anderen Seiten teilen

schonmal vieln dank :)

bekomme aber folgenden, mir unbekannten, fehler:

Error: java.sql.SQLException: The derived table expression is missing a correlation name. Check derived table syntax in the Reference Manual.

, SQL State: S1000, Error Code: 11753

ich probier mal weiter....wenn ihr noch ne idee habt immr raus damit ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank für eure Hilfe, hab jetzt aber den Fehler gefunden:

der IN-Befehl + Subselect:


... IN (SELECT tmp.string_s

         FROM tmp

         WHERE login_s = 'FBOETT')
darf nicht "um" den gesamten großen UNION-Select, sondern muss für beide Teile des UNIONS einzeln angewendet werden. Hier nochmal der Kot:

SELECT RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s) AS 'Name',

abwesenheiten.abwesendvon_d,

abwesenheiten.abwesendbis_d,

abwesenheiten.begruendung_s,

abwesenheiten.abwesenheit_id,

len(RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s)) AS Name_Laenge,

(DATEDIFF(day, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d)+1) AS 'Tage (insg.)' ,

(DATEDIFF(dd, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d) + 1)

-(DATEDIFF(wk, abwesenheiten.abwesendvon_d, abwesenheiten.abwesendbis_d) * 2)

-(CASE WHEN DATENAME(dw, abwesenheiten.abwesendvon_d) = 'Sunday' THEN 1 ELSE 0 END)

-(CASE WHEN DATENAME(dw, abwesenheiten.abwesendbis_d) = 'Saturday' THEN 1 ELSE 0 END) AS 'Tage (ohne WE)',

'Urlaub' AS 'typ'

FROM abwesenheiten

LEFT JOIN mitarbeiter on abwesenheiten.mitarbeiter_s = (RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s))

WHERE RTRIM(mitarbeiter.nachname_s) + ', ' + RTRIM(mitarbeiter.vorname_s)

[B]IN (SELECT tmp.string_s

                    FROM tmp

                    WHERE login_s = 'FBOETT'[/B])

UNION

SELECT bereitschaften.mitarbeiter_s AS 'Name',

bereitschaften.bereitschaftvon_dt,

bereitschaften.bereitschaftbis_dt,

bereitschaften.bemerkung_s,

bereitschaften.bereitschaft_id,

len(RTRIM(bereitschaften.mitarbeiter_s)) AS Name_Laenge,

bereitschaften.gepaufwand_n,

bereitschaften.tataufwand_n,

bereitschaften.bereitschaftstyp_s

FROM bereitschaften

WHERE bereitschaften.mitarbeiter_s 

[B]IN (SELECT tmp.string_s

                    FROM tmp

                    WHERE login_s = 'FBOETT'[/B])

Danke euch, trotzdem! Hab nicht mit soviel Resonanz gerechnet :)

lg

Flow

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...