Centar za edukaciju-BiH


Stranice (6):1,2,3,4,5,6

#31 09.06.2020 16:39
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: SQL upiti
PreuzmiIzvorni kôd (SQL):
  1. SELECT r1.DATE, e1.id_employees, r1.id_department, s1.id_office, s1.startTime
  2. FROM tbl_schedule AS r1
  3. INNER JOIN tbl_calendar AS k1 ON r1.DATE = k1.DATE
  4. LEFT JOIN tbl_citydepartmentoffice AS s1 ON (k1.id_cityDepartmentOffice = s1.Id_cityDeparmentOffice AND r1.id_department = s1.id_department)
  5. INNER JOIN tbl_employees AS e1 ON r1.id_employees=e1.id_employees
  6. INNER JOIN (
  7.     SELECT ra1.DATE, ea1.id_employees, ra1.id_department, sa1.id_office, sa1.startTime
  8.     FROM tbl_schedule AS ra1
  9.     INNER JOIN tbl_calendar AS ka1 ON ra1.DATE = ka1.DATE
  10.     LEFT JOIN tbl_citydepartmentoffice AS sa1 ON (ka1.id_cityDepartmentOffice = sa1.Id_cityDeparmentOffice AND ra1.id_department = sa1.id_department)
  11.     INNER JOIN tbl_employees AS ea1 ON ra1.id_employees=ea1.id_employees
  12.     WHERE ea1.id_employees=1001) tUs
  13. ON r1.DATE=tUs.DATE AND s1.id_office=tUs.id_office
  14.  
  15. UNION ALL
  16.  
  17. SELECT r1.DATE, e1.id_employees, r1.id_department, s1.id_office, s1.startTime
  18. FROM tbl_schedule AS r1
  19. INNER JOIN tbl_calendar AS k1 ON r1.DATE = k1.DATE
  20. LEFT JOIN tbl_citydepartmentoffice AS s1 ON (k1.id_cityDepartmentOffice = s1.Id_cityDeparmentOffice AND r1.id_department = s1.id_department)
  21. INNER JOIN tbl_employees AS e1 ON r1.id_employees=e1.id_employees
  22. INNER JOIN (
  23.     SELECT ra1.DATE, ea1.id_employees, ra1.id_department, sa1.id_office, sa1.startTime
  24.     FROM tbl_schedule AS ra1
  25.     INNER JOIN tbl_calendar AS ka1 ON ra1.DATE = ka1.DATE
  26.     LEFT JOIN tbl_citydepartmentoffice AS sa1 ON (ka1.id_cityDepartmentOffice = sa1.Id_cityDeparmentOffice AND ra1.id_department = sa1.id_department)
  27.     INNER JOIN tbl_employees AS ea1 ON ra1.id_employees=ea1.id_employees
  28.     WHERE ea1.id_employees=1001) tUs
  29. ON r1.DATE=tUs.DATE AND e1.id_employees=tUs.id_employees
  30. WHERE ISNULL(s1.id_office) ;
↑  ↓

#32 09.06.2020 19:54
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: SQL upiti
Ti trazis ovo rjesenje ali ovo rjesenje nije tacno po meni.
PreuzmiIzvorni kôd (Text):
  1. SELECT  rv.Date
  2. ,rv.id_employees
  3. ,r.name
  4.  
  5. ,rv.id_department
  6. ,o.id_office
  7. ,o.startTime
  8. FROM tbl_schedule as rv
  9. INNER JOIN tbl_employees  as r ON rv.id_employees=r.id_employees
  10. INNER JOIN tbl_calendar as k   ON k.date=rv.date
  11. INNER JOIN tbl_citydepartmentoffice as o   ON o.Id_cityDeparmentOffice=k.id_cityDepartmentOffice
  12. AND rv.id_department=o.id_department
  13. WHERE  CONCAT(o.id_office,rv.Date)
  14. IN (SELECT CONCAT(o.id_office,rv.Date) as kljuc
  15. FROM tbl_schedule as rv
  16. INNER JOIN tbl_citydepartmentoffice as o   ON rv.id_department=o.id_department
  17. WHERE rv.id_employees=1001
  18. )
  19. AND
  20. rv.id_employees<>1001

evo zasto nije tacno.
grad
---------
id grad
id kancelarija
id zgrada

kancelarija jeste ista ali nije u istom gradu i u istoj zgradi-
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#33 09.06.2020 21:11
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: SQL upiti
Napravi prvo View V1
PreuzmiIzvorni kôd (SQL):
  1. CREATE VIEW V1 AS
  2. SELECT tblEmployees.Name, tblSchedule.DATE, tblCityDepartmentOffice.IDOffice,
  3.  tblCityDepartmentOffice.IDDepartment, tblCityDepartmentOffice.IDCityDepartmentOffice,
  4.  tblCityDepartmentOffice.StartTime
  5. FROM (tblEmployees INNER JOIN tblSchedule
  6. ON tblEmployees.IDEmployees = tblSchedule.IDEmployees)
  7. INNER JOIN tblCityDepartmentOffice
  8. ON tblSchedule.IDDepartment = tblCityDepartmentOffice.IDDepartment;

Pa onda

PreuzmiIzvorni kôd (SQL):
  1. SELECT V1.Name, V1.DATE, V1.IDCityDepartmentOffice, V1.StartTime FROM V1
  2. INNER JOIN V1 AS T2
  3. ON V1.DATE = T2.DATE
  4. AND  V1.Office = T2.IDOffice AND V1.IDDepartment = V1.IDDepartment
  5. WHERE V1.name <> 'Vasko' AND T2.Name = 'Vasko'
Ovaj post je ureden 2 puta. Posljednja izmjena 09.06.2020 21:44 od strane dex. ↑  ↓

#34 10.06.2020 09:37
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,707


Predmet:Re: SQL upiti
Citiraj Gjoreski:
PreuzmiIzvorni kôd (SQL):
  1. SELECT r1.DATE, e1.id_employees, r1.id_department, s1.id_office, s1.startTime
  2. FROM tbl_schedule AS r1
  3. INNER JOIN tbl_calendar AS k1 ON r1.DATE = k1.DATE
  4. LEFT JOIN tbl_citydepartmentoffice AS s1 ON (k1.id_cityDepartmentOffice = s1.Id_cityDeparmentOffice AND r1.id_department = s1.id_department)
  5. INNER JOIN tbl_employees AS e1 ON r1.id_employees=e1.id_employees
  6. INNER JOIN (
  7.     SELECT ra1.DATE, ea1.id_employees, ra1.id_department, sa1.id_office, sa1.startTime
  8.     FROM tbl_schedule AS ra1
  9.     INNER JOIN tbl_calendar AS ka1 ON ra1.DATE = ka1.DATE
  10.     LEFT JOIN tbl_citydepartmentoffice AS sa1 ON (ka1.id_cityDepartmentOffice = sa1.Id_cityDeparmentOffice AND ra1.id_department = sa1.id_department)
  11.     INNER JOIN tbl_employees AS ea1 ON ra1.id_employees=ea1.id_employees
  12.     WHERE ea1.id_employees=1001) tUs
  13. ON r1.DATE=tUs.DATE AND s1.id_office=tUs.id_office
  14.  
  15. UNION ALL
  16.  
  17. SELECT r1.DATE, e1.id_employees, r1.id_department, s1.id_office, s1.startTime
  18. FROM tbl_schedule AS r1
  19. INNER JOIN tbl_calendar AS k1 ON r1.DATE = k1.DATE
  20. LEFT JOIN tbl_citydepartmentoffice AS s1 ON (k1.id_cityDepartmentOffice = s1.Id_cityDeparmentOffice AND r1.id_department = s1.id_department)
  21. INNER JOIN tbl_employees AS e1 ON r1.id_employees=e1.id_employees
  22. INNER JOIN (
  23.     SELECT ra1.DATE, ea1.id_employees, ra1.id_department, sa1.id_office, sa1.startTime
  24.     FROM tbl_schedule AS ra1
  25.     INNER JOIN tbl_calendar AS ka1 ON ra1.DATE = ka1.DATE
  26.     LEFT JOIN tbl_citydepartmentoffice AS sa1 ON (ka1.id_cityDepartmentOffice = sa1.Id_cityDeparmentOffice AND ra1.id_department = sa1.id_department)
  27.     INNER JOIN tbl_employees AS ea1 ON ra1.id_employees=ea1.id_employees
  28.     WHERE ea1.id_employees=1001) tUs
  29. ON r1.DATE=tUs.DATE AND e1.id_employees=tUs.id_employees
  30. WHERE ISNULL(s1.id_office) ;

čudno mi je radio ovaj sql, nakon Å¡to sam ga pokrenuo on se izvrÅ¡io i dao mi mogučnost editiranja i promjena , a očekivao sam samo rezultat. Evo Å¡to sam dobio:
Full textsdateid_employeesid_departmentid_officestartTime
    Edit EditCopy CopyDelete Delete2020-06-01100110
    Edit EditCopy CopyDelete Delete2020-06-021001630
    Edit EditCopy CopyDelete Delete2020-06-031001330
    Edit EditCopy CopyDelete Delete2020-06-04100130
    Edit EditCopy CopyDelete Delete2020-06-051001620
    Edit EditCopy CopyDelete Delete2020-06-061001320
    Edit EditCopy CopyDelete Delete2020-06-011002310
    Edit EditCopy CopyDelete Delete2020-06-031002630
    Edit EditCopy CopyDelete Delete2020-06-041002330
    Edit EditCopy CopyDelete Delete2020-06-011003610
    Edit EditCopy CopyDelete Delete2020-06-041003630
    Edit EditCopy CopyDelete Delete2020-06-02100830
    Edit EditCopy CopyDelete Delete2020-06-05100820
    Edit EditCopy CopyDelete Delete2020-06-021009330
    Edit EditCopy CopyDelete Delete2020-06-03100930
    Edit EditCopy CopyDelete Delete2020-06-051009320
    Edit EditCopy CopyDelete Delete2020-06-06100920
    Edit EditCopy CopyDelete Delete2020-06-071001FD

nažalost, nije točno.

Citiraj zxz:
Ti trazis ovo rjesenje ali ovo rjesenje nije tacno po meni.
PreuzmiIzvorni kôd (Text):
  1. SELECT  rv.Date
  2. ,rv.id_employees
  3. ,r.name
  4.  
  5. ,rv.id_department
  6. ,o.id_office
  7. ,o.startTime
  8. FROM tbl_schedule as rv
  9. INNER JOIN tbl_employees  as r ON rv.id_employees=r.id_employees
  10. INNER JOIN tbl_calendar as k   ON k.date=rv.date
  11. INNER JOIN tbl_citydepartmentoffice as o   ON o.Id_cityDeparmentOffice=k.id_cityDepartmentOffice
  12. AND rv.id_department=o.id_department
  13. WHERE  CONCAT(o.id_office,rv.Date)
  14. IN (SELECT CONCAT(o.id_office,rv.Date) as kljuc
  15. FROM tbl_schedule as rv
  16. INNER JOIN tbl_citydepartmentoffice as o   ON rv.id_department=o.id_department
  17. WHERE rv.id_employees=1001
  18. )
  19. AND
  20. rv.id_employees<>1001

evo zasto nije tacno.
grad
---------
id grad
id kancelarija
id zgrada

kancelarija jeste ista ali nije u istom gradu i u istoj zgradi-

Dodao sam na kraj ORDER BY rv.date ASC.
Ovaj upit napravi dobro ali izostavi 1001
evo rezultat:

Dateid_employeesnameid_departmentid_officestartTime
2020-06-011002Luka310111:00:00
2020-06-011003Marko610117:00:00
2020-06-021008Ahmed30306:00:00
2020-06-021009Aleksandar330312:00:00
2020-06-031002Luka630318:00:00
2020-06-031009Aleksandar30306:00:00
2020-06-041002Luka330312:00:00
2020-06-041003Marko630318:00:00
2020-06-051008Ahmed20205:30:00
2020-06-051009Aleksandar320211:30:00
2020-06-061009Aleksandar20209:00:00

zivot je moja domovina.
↑  ↓

#35 10.06.2020 09:38
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,707


Predmet:Re: SQL upiti
Citiraj dex:
Napravi prvo View V1
PreuzmiIzvorni kôd (SQL):
  1. CREATE VIEW V1 AS
  2. SELECT tblEmployees.Name, tblSchedule.DATE, tblCityDepartmentOffice.IDOffice,
  3.  tblCityDepartmentOffice.IDDepartment, tblCityDepartmentOffice.IDCityDepartmentOffice,
  4.  tblCityDepartmentOffice.StartTime
  5. FROM (tblEmployees INNER JOIN tblSchedule
  6. ON tblEmployees.IDEmployees = tblSchedule.IDEmployees)
  7. INNER JOIN tblCityDepartmentOffice
  8. ON tblSchedule.IDDepartment = tblCityDepartmentOffice.IDDepartment;

Pa onda

PreuzmiIzvorni kôd (SQL):
  1. SELECT V1.Name, V1.DATE, V1.IDCityDepartmentOffice, V1.StartTime FROM V1
  2. INNER JOIN V1 AS T2
  3. ON V1.DATE = T2.DATE
  4. AND  V1.Office = T2.IDOffice AND V1.IDDepartment = V1.IDDepartment
  5. WHERE V1.name <> 'Vasko' AND T2.Name = 'Vasko'

Na pocetku sam se i ja sam upustio u vies no problemi su nastali kad sam htio obrisati view sa delete if exist, ili isprazniti tu tablu. To sam rijesio preko admin panela (DROP). Onda sam pomislio koliko bi tek imao problema u php-u tako da sam odustao.

ovo je rezultat tvojeg upita:

namedate Ascending 1Id_cityDeparmentOfficestartTime
Luka2020-06-0110611:00:00
Luka2020-06-0110611:00:00
Luka2020-06-0110611:00:00
Luka2020-06-0160611:00:00
Luka2020-06-0160611:00:00
Luka2020-06-0160611:00:00
Luka2020-06-0170612:00:00
Luka2020-06-0170612:00:00
Luka2020-06-0170612:00:00
Marko2020-06-0110617:00:00
Marko2020-06-0110617:00:00
Marko2020-06-0110617:00:00
Marko2020-06-0160617:00:00
Marko2020-06-0160617:00:00
Marko2020-06-0160617:00:00
Marko2020-06-0170618:00:00
Marko2020-06-0170618:00:00
Marko2020-06-0170618:00:00
Ahmed2020-06-0210606:00:00
Aleksandar2020-06-0210612:00:00
Luka2020-06-0310618:00:00
Aleksandar2020-06-0310606:00:00
Luka2020-06-0410612:00:00
Marko2020-06-0410618:00:00
Ahmed2020-06-0510605:30:00
Ahmed2020-06-0560609:00:00
Aleksandar2020-06-0510611:30:00
Aleksandar2020-06-0560615:00:00
Aleksandar2020-06-0610605:30:00
Aleksandar2020-06-0610605:30:00
Aleksandar2020-06-0660609:00:00
Aleksandar2020-06-0660609:00:00

znaci ovo treba ostati nakon upita:
date Ascending 1id_employeesid_departmentid_officestartTime
2020-06-01100110105:00:00
2020-06-011002310111:00:00
2020-06-011003610117:00:00
2020-06-02100830306:00:00
2020-06-021009330312:00:00
2020-06-021001630318:00:00
2020-06-03100930306:00:00
2020-06-031001330312:00:00
2020-06-031002630318:00:00
2020-06-04100130306:00:00
2020-06-041002330312:00:00
2020-06-041003630318:00:00
2020-06-05100820205:30:00
2020-06-051009320211:30:00
2020-06-051001620217:30:00
2020-06-06100920209:00:00
2020-06-061001320215:00:00
2020-06-071001FDNULL NULL 

zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 10.06.2020 09:39 od strane Avko. ↑  ↓

#36 10.06.2020 09:39
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,707


Predmet:Re: SQL upiti
e sada ja sam nesto ispobavao i dosao do ovoga upita:

PreuzmiIzvorni kôd (Text):
  1. SELECT r1.date, e1.id_employees, r1.id_department, s1.id_office, s1.startTime
  2. FROM tbl_schedule as r1
  3. INNER JOIN tbl_calendar AS k1 ON r1.date = k1.date
  4. INNER JOIN tbl_citydepartmentoffice AS s1 ON (k1.id_cityDepartmentOffice = s1.Id_cityDeparmentOffice AND r1.id_department = s1.id_department)
  5. INNER JOIN tbl_employees AS e1 ON r1.id_employees=e1.id_employees
  6. WHERE r1.date >= DATE('2020-06-01')
  7. AND s1.id_office =(
  8.         SELECT s2.id_office
  9.         FROM tbl_schedule as r2
  10.         INNER JOIN tbl_calendar AS k2 ON r2.date = k2.date
  11.         INNER JOIN tbl_citydepartmentoffice AS s2 ON (k2.id_cityDepartmentOffice = s2.Id_cityDeparmentOffice AND r2.id_department = s2.id_department)
  12.         INNER JOIN tbl_employees AS e2 ON r2.id_employees=e2.id_employees
  13.         WHERE r2.id_employees='1001' AND r2.date = r1.date)
  14. ORDER BY r1.date ASC, r1.id_department ASC;

Taj upit mi da tocan rezultat uz to da mi ne ispiše za 7.6. FD

date Ascending 1id_employeesid_departmentid_officestartTime
2020-06-01100110105:00:00
2020-06-011002310111:00:00
2020-06-011003610117:00:00
2020-06-02100830306:00:00
2020-06-021009330312:00:00
2020-06-021001630318:00:00
2020-06-03100930306:00:00
2020-06-031001330312:00:00
2020-06-031002630318:00:00
2020-06-04100130306:00:00
2020-06-041002330312:00:00
2020-06-041003630318:00:00
2020-06-05100820205:30:00
2020-06-051009320211:30:00
2020-06-051001620217:30:00
2020-06-06100920209:00:00
2020-06-061001320215:00:00

razmisljao sam upotrijebiti IF THEN ELSE, recimo ako je u schedule id_department > 0 onda izvršiti gornji upit, a ako schedule.id_department nije broj NOT NUMERIC ili ISNUMERIC (neznam kako u mysql-u) onda samo ispiše za taj datum schedule.id_department

eto tako sam ja to zamislio.
zivot je moja domovina.
↑  ↓

#37 10.06.2020 11:13
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: SQL upiti
Ne moras if then dodaj union upit samo za oni sa FD.
↑  ↓

#38 10.06.2020 11:21
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: SQL upiti
Citat:
Treba napisati upit: tko je sve radio sa Vaskom u kancelariji?
Ovi rezultati sto ti trazis ne zadovoljavaju ovoaj zadatak.
Ovi ljudim nisu radili sa vaskom u kancelarji a jedino vasko sam sa sobom jest rdi.
Ako se trazi ko je raio sa Vaskom onda tu netreba biti Vasko,
Drugo ovi ljudm sau radili u kancelarijama koje imaju isti broj kao i vaskova kancelarija a ne u istim
kancelarijama.
dateid_employeesnameId_cityDeparmentOfficeid_departmentid_office
01/06/2020    1001Vasko106101
01/06/2020    1001Vasko606101
01/06/2020    1001Vasko706101
01/06/2020    1002Luka1063101
01/06/2020    1002Luka6063101
01/06/2020    1002Luka7063101
01/06/2020    1003Marko1066101
01/06/2020    1003Marko6066101
01/06/2020    1003Marko7066101
01/06/2020    1004Ivan106202
01/06/2020    1004Ivan606202
01/06/2020    1005Marta1063202
01/06/2020    1005Marta6063202
01/06/2020    1006Smiljan1066202
01/06/2020    1007Mitar106303
01/06/2020    1008Ahmed1063303
01/06/2020    1009Aleksandar1066303

Iz prilozenog se vidi da je na dan 2020-06-01 Vasko radio u Id_cityDeparmentOffice 106,id_department 10 u id_office 1.
Na taj dan u tom gradu u toj zgradi nije vise niko radi.
Cak u istj zgradi sa njim nije vise niko radio.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 1 puta. Posljednja izmjena 10.06.2020 11:22 od strane zxz. ↑  ↓

#39 10.06.2020 16:23
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,707


Predmet:Re: SQL upiti
kancelarija ima id, na to sam i mislio. Tko je sve radio u id kancelarija kao i vsasko
zivot je moja domovina.
↑  ↓

#40 10.06.2020 20:04
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: SQL upiti
jel datum uslov ili nije
↑  ↓

Stranice (6):1,2,3,4,5,6


Sva vremena su GMT +02:00. Trenutno vrijeme: 12: 19 pm.