Select prichody do prace   zodpovězená otázka

SQL, Databáze

Dobry den

Riesim tento sql select cely den a nemozem sa nejako dopatrat k vysledku. Prosim o pomoc, dakujem.

Mam 3 tabulky:

Tabulka1: Zamestnanci

Stlpce ID, ID_Zamestanec, Meno, Priezvisko, Adresa

Tabulka2: Prichod

Stlpce: ID, ID_Zamestnanec,Datum, Cas

Tabulka3: Odchod

Stlpce: ID, ID_Zamestnanec,Datum, Cas

Potrebujem spravit SELECT tak aby som dostal vypis pritomnosti zamestnancov na pracovisku v dnesny den, ktori este pracuju a neodisli...

"SELECT Zamestnanci.ID_Zamestnanec, Zamestnanci.Meno,
        Zamestnanci.Priezvisko, Prichod.ID_Zamestnanec, 
        Prichod.Datum, Prichod.Cas, Odchod.ID_Zamestnanec,
        Odchod.Datum, Odchod.Cas 

FROM Zamestnanci,Prichod, Odchod

Where Zamestnanci.ID_Zamestnanec = Prichod.ID_Zamestnanec AND 
      Odchod.ID_Zamestnanec = Prichod.ID_Zamestnanec AND
      Prichod.Datum = " & "'" & Datum_dnesny & "'" AND
      Odchod.Datum = " & "'" & Datum_dnesny & "'"

Tento select mi vrati zamestnacov ktori maju ten den prichod a odchod z prace. Ja potrebujem vypis pritomnosti na pracovisku kde budu iba aktualny zamestnaci ktori su dnes este v praci a nemaju este v tabulke Odchod datum odchodu.

Ked som skusal

SELECT
...........
Where Zamestnanci.ID_Zamestnanec = Prichod.ID_Zamestnanec AND 
      Odchod.ID_Zamestnanec = Prichod.ID_Zamestnanec AND
      Prichod.Datum = " & "'" & Datum_dnesny & "'"
      

Tak vypis mi vratil zamestnancov prichod v dnesny den a zamestnancov odchod v ostanych datumoch. Potrebujem osetrit to aby vybral datum z prichodu a overil ci sa datum nenachadza v tabulke odchodu.

Dakujem za pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravm,

zkusil bych následující:

rem Výpis těch co NEODEŠLI
"SELECT z.*, p.* 
 FROM Zamestanci AS z, Prichod AS p
 WHERE z.ID_Zamestanec = p.ID_Zamestanec AND 
       p.datum = '" & Datum_dnesny "' AND 
       NOT EXISTS (SELECT * FROM Odchod AS o 
                   WHERE z.ID_Zamestanec = o.ID_Zamestanec AND
                         o.Datum = '" & Datum_dnesny & "')"

J

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Zdravím,

Zaměstanci na pracovišti:

je-li v daný dan více odchodů/příchodů pro jednotlivého zaměstance, pak EXISTS selhává, Musí se reagovat např:

SELECT z_id, z_fname, z_lname FROM z WHERE z_id IN (SELECT p_z_id FROM ( SELECT COUNT(*) AS nP, 0 AS nO ,`p_z_id` FROM `p` WHERE `p_date` = '2012-11-10' GROUP BY 2,3 UNION SELECT 0 AS nP, COUNT(*) AS nO , o_z_id FROM o WHERE o_date = '2012-11-10' GROUP BY 1,3) AS t_in GROUP BY p_z_id  HAVING SUM(nP) > SUM(nO))

kde "příchodů" je více než "odchodů"

Syntax pro MySQL 5.1

J

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dobrý den,

doporučuji tyto příchody a odchody načíst do paměti a tam je zpracovávat. Předejdete tím komplikacím v případě přidávání různých nových pravidel a vyjímek, pokud bude potřeba dotaz rozšiřovat.

Pokud však z nějakého důvodu trváte na načítání přímo dotazem do DB, doporučuji postupovat následujícím způsobem:

1) Získat seznam všech dnů, ve kterých existují příchody/odchody.

2) Provést JOIN tohoto seznamu na seznam příchodů + seznam odchodů.

3) Zagregovat / vyfiltrovat tento seznam.

Pro dotaz na zaměstnance, kteří ještě neodešli bude důležité:

- omezit filtr pouze na aktuální den

- vyfiltrovat výsledky bez napojení na záznam v odchodech

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Prepáčte, že až teraz reagujem, ale až teraz som sa dostal k projektu.

Veľmi pekne Vám všetkým ďakujem za pomoc, s Vašou podporou sa mi to podarilo rozchodiť a funguje to na 100 percent.

Ešte raz ďakujem za pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback