Veröffentlicht 15. Mai 200916 j 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
15. Mai 200916 j 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');
15. Mai 200916 j 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
15. Mai 200916 j Es handelt sich um eine Sybase Datenbank...also Transact-SQL.... wenn ich den befehl für MySQL oder so hätte könnt ich den aber vllt auch umbauen... Der Fehler kommt aus SQuirelL (daher java.bla.bla )
15. Mai 200916 j Im moment steht da ja versimpelt: SELECT * FROM (select 'viele colums' from tabelle1 UNION select 'viele columns' from tabelle2) WHERE 'Name' IN (SELECT tmp.string_s FROM tmp WHERE login_s = 'FBOETT') dürften in der klammer nicht nur tabellen stehen?
15. Mai 200916 j Hi, geb mal dem Subselect nach dem From einen "Tabellennamen" also hier: WHERE 'Name' IN (SELECT tmp.string_s FROM tmp WHERE login_s = 'FBOETT') (AS) tab; Gruß
15. Mai 200916 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.