Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zapytaniem
Forum PHP.pl > Forum > Bazy danych
ergovision
Witam!
musze uzuwac MS sql server.....
Takie mam problemy:

1.Jak zrobic zapytanie obliczjace kto najdluzej pracuje majac dana date zatrudnienia.

2.Mam tabele, w której 1 oznacza ze dany pracownik był obecny a 0 ze nie,
kazdy wiersz to jeden pracownik,
Jak skonstruowac zapytanie , ktore pozwoli zliczac kto i ile dni nie był w pracy.
oto kodzik:)

CREATE TABLE obecnosc(
id_dzien_rob smallint NOT NULL default '0',
id_pracownik smallint NOT NULL default '0',
s1 int NOT NULL default'',
s2 int NOT NULL default'' ,
s3 int NOT NULL default'' ,
s4 int NOT NULL default'' ,
s5 int NOT NULL default'' ,
s6 int NOT NULL default'' ,
....
s30 int NOT NULL default'' ,
s31 int NOT NULL default'' ,
PRIMARY KEY (id_dzien_rob)
);

wypełnienie:

INSERT INTO obecnosc VALUES(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(3,3,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(4,4,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(5,5,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(6,6,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(7,7,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(8,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(9,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(10,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO obecnosc VALUES(11,11,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);

Ps: kazdy wiersz to jeden pracownik
Z góry dziekuje!
POZDRAWIAM
popbart
blink.gif Poroniona struktura tabeli. Każdy wiersz powinien być dniem obecności dla danego pracownika. Z tym tworem to tylko do kosza tongue.gif
ergovision
Maialem tak ale wtedy nie było jak relacji zrobic.....
ale juz sobie z tym poradziłem jakos...

A jak rozwiazac problem z data?

Pozdrawiam!
popbart
Jak to nie ma jak relacji zrobić?
tabela obecnosc:
id_obecnosci | id_pracownika | data | obecnosc

Cytat
Jak skonstruowac zapytanie , ktore pozwoli zliczac kto i ile dni nie był w pracy.

a teraz jak łatwo zapytanie zrobić:
  1. SELECT id_pracownik,count(obecnosc)
  2.  
  3. FROM obecnosc WHERE obecnosc=0 //mozna dodac zakres datowy
  4. GROUP BY id_pracownik


Cytat
1.Jak zrobic zapytanie obliczjace kto najdluzej pracuje majac dana date zatrudnienia

odp:
  1. SELECT id_pracownik, data_zatrudnienia
  2. FROM pracownik WHERE data_zatrudnienia IN(SELECT min(data_zatrudnienia)
  3. FROM pracownik)

Pozdrawiam smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.