__Flow__ Geschrieben 15. Mai 2009 Teilen Geschrieben 15. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ntl Geschrieben 15. Mai 2009 Teilen Geschrieben 15. Mai 2009 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'); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
__Flow__ Geschrieben 15. Mai 2009 Autor Teilen Geschrieben 15. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ntl Geschrieben 15. Mai 2009 Teilen Geschrieben 15. Mai 2009 Um was für eine DB handelt es sich, wenn ich fragen darf? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
__Flow__ Geschrieben 15. Mai 2009 Autor Teilen Geschrieben 15. Mai 2009 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 ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
__Flow__ Geschrieben 15. Mai 2009 Autor Teilen Geschrieben 15. Mai 2009 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schmarrer Geschrieben 15. Mai 2009 Teilen Geschrieben 15. Mai 2009 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ß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
__Flow__ Geschrieben 15. Mai 2009 Autor Teilen Geschrieben 15. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
__Flow__ Geschrieben 15. Mai 2009 Autor Teilen Geschrieben 15. Mai 2009 --closeable-- Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.