Avko 02.06.2020 10:06
Predmet:SQL upiti

Pronadi sve zaposlenike koji zive u istoj ulici kao i Vasko

PreuzmiIzvorni kôd (Text):
  1. CREATE TABLE `zaposlenici` (
  2.   `id` int(11) NOT NULL,
  3.   `ime` text NOT NULL,
  4.   `adresa` text NOT NULL,
  5.   `grad` text NOT NULL
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  7.  
  8. INSERT INTO `zaposlenici` (`id`, `ime`, `adresa`, `grad`) VALUES
  9. (1, 'Vasko', 'Vardarska', 'Zagreb'),
  10. (2, 'Luka', 'Osijecka', 'Zagreb'),
  11. (3, 'Marko', 'Zagorska', 'Zagreb'),
  12. (4, 'Ivan', 'Osijecka', 'Zagreb'),
  13. (5, 'Marta', 'Zagrebacka', 'Zagreb'),
  14. (6, 'Smiljan', 'Vardarska', 'Zagreb'),
  15. (7, 'Mitar', 'Zagorska', 'Zagreb'),
  16. (8, 'Ahmed', 'Vardarska', 'Zagreb');
  17.  
  18. ALTER TABLE `zaposlenici`
  19.   ADD PRIMARY KEY (`id`);

Avko 02.06.2020 10:07
Predmet:Re: SQL upiti

Citiraj Gjoreski:
PreuzmiIzvorni kôd (SQL):
  1. SELECT * FROM tblKorisnik
  2. WHERE kMesto IN (SELECT kMesto FROM tblKorisnik WHERE ID_Korisnik = 28 )

OVO CE RADITI SAMO AKO JE ULICA NAPISANA U SVA REDOVA IDENTICNO

PreuzmiIzvorni kôd (SQL):
  1. SELECT * FROM tblKorisnik
  2. WHERE kAdresa LIKE '%' + LEFT((SELECT kAdresa FROM tblKorisnik WHERE ID_Korisnik = 32 ),6) + '%'

Avko 02.06.2020 10:14
Predmet:Re: SQL upiti

SELECT * FROM zaposlenici
WHERE adresa IN (SELECT adresa FROM zaposlenici WHERE id = 1 )

rezultat:
    1     Vasko     Vardarska     Zagreb
    6     Smiljan     Vardarska     Zagreb
    8     Ahmed     Vardarska     Zagreb

Avko 02.06.2020 10:16
Predmet:Re: SQL upiti

U nekoj knjiznici imamo knjige po ID

knjige posudivanje clanovi
ID knjige id knjige  id clana
naslov knjige  datum  ime
autor knjige  id clana  adresa

U 8:00 neki čovjek uzima knjigu iz knjižnice i vraća ju u 11:00.
Tu istu knjigu uzima Vasko svaki dan točno u 12:00 i vraća ju u knjižnicu u 18:00.
U 18:00 tu istu knjigu uzima neki treći čovjek i vraća ju sutradan ujutro u 8:00.

Policija misli da knjige služe tajnoj organizaciji za razmjenu važnih podataka.
Treba naći ljude koji su posudivali istu knjigu (ID knjige) istoga datuma kada i Vasko.

Gjoreski 02.06.2020 11:42
Predmet:Re: SQL upiti

Ovo tvoje zadnje pitajne je sasvim nejasno .
Postavi tabela i reci sta zelis da se izvuce

Avko 02.06.2020 12:53
Predmet:Re: SQL upiti

tblKnjige
------------
id
naslov
autor

tblPosudivanje
------------------
datum
idKnjige
idClan

tblClanovi
-------------
id
ime
adresa

Svi clanovi koji su posudili istu knjigu kao i Vasko i istog datuma

Avko 02.06.2020 23:43
Predmet:Re: SQL upiti

evo ja sam danas cijeli dan trazio jedan hebeni upit i nisam ga rijesio.

uspio sam samo za jedan dan, neznam kako za sve dane.

evo sto sam ja napravio:

PreuzmiIzvorni kôd (Text):
  1. SELECT *
  2. FROM posudivanje AS p
  3. INNER JOIN knjige AS k ON p.idKnjiga=k.id
  4. INNER JOIN zaposlenici AS z ON p.idClan=z.id
  5. WHERE p.datum='2020-06-02'
  6. AND k.id=(SELECT p1.idKnjiga
  7.           FROM posudivanje AS p1
  8.          WHERE p1.idClan='1' AND p1.datum='2020-06-02')

moram priznati da me je i malo iznerviralo.
Puno sam trazio po internetu no nalazio sam samo jednostavne primjere.

Gjoreski 04.06.2020 10:54
Predmet:Re: SQL upiti

PreuzmiIzvorni kôd (SQL):
  1. SELECT B.datum,Naslov,Ime
  2. FROM tblPosudivanje A
  3. INNER JOIN tblPosudivanje B ON A.Datum=B.Datum AND A.idKnjige=B.idKnjige
  4. INNER JOIN tblKnjige ON tblKnjige.ID=B.idKnjige
  5. INNER JOIN tblClanovi ON tblClanovi.ID=B.idClan
  6. WHERE A.idClan=1

Avko 04.06.2020 15:11
Predmet:Re: SQL upiti

Gjoreski, ovo radi savršeno.
Hvala

Avko 05.06.2020 18:53
Predmet:Re: SQL upiti

sada sa 4 tbl

tblCalendar
---------------
Date
IdCityDepartmentOffice

tblEmployees
-----------------
IdEmployees
Name
Adress
Phone
Email

tblSchedule
---------------
IdEmployees
IdDepartment
Date

tblCityDepartmentOffice
-------------------------------
IdCityDepartmentOffice
IdDepartment
IdOffice
StartTime



DATA

schedule-Å¡ema=>ovo nije tabla samo da se vidi kako funkcionira
IdDepartment
10
310
610
20
320
620
30
330
630

tblSchedule
Id employees
1001
1001
1001
1001
1001
1001
1001
1002
1002
1002
1002
1002
1002
1002
1003
1003
1003
1003
1003
1003
1003
1004
1004
1004
1004
1004
1004
1004
1005
1005
1005
1005
1005
1005
1005
1006
1006
1006
1006
1006
1006
1006
1007
1007
1007
1007
1007
1007
1007
1008
1008
1008
1008
1008
1008
1008
1009
1009
1009
1009
1009
1009
1009

tblCalendar
date
1.6.
2.6.
3.6.
4.6.
5.6.
6.6.
7.6.

Employees
Id employees
1001
1002
1003
1004
1005
1006
1007
1008
1009

tblCityDepartmentOffice
IdCityDepartmentOffice
0106
0106
0106
0106
0106
0106
0106
0106
0106
0606
0606
0606
0606
0606
0706
0706
0706


U kojoj kancelariji (office) je radio Vasko?

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 =(SELECT s2.id_office
  8. FROM tbl_schedule as r2
  9. INNER JOIN tbl_calendar AS k2 ON r2.date = k2.date
  10. INNER JOIN tbl_citydepartmentoffice AS s2 ON (k2.id_cityDepartmentOffice = s2.Id_cityDeparmentOffice AND r2.id_department = s2.id_department)
  11. INNER JOIN tbl_employees AS e2 ON r2.id_employees=e2.id_employees
  12. WHERE r2.id_employees='1001' AND r2.date = DATE('2020-06-01'))
rezultat:
dateid_employeesid_departmentid_officestartTime 
2020-06-01100110105:00:00 
2020-06-011002310111:00:00 
2020-06-011003610117:00:00 

Pitanje:

Treba napisati upit: tko je sve radio sa Vaskom u kancelariji?

rezultat bi trebao pokazati:

dateid_employeesid_departmentid_officestartTime 
2020-06-01100110105:00:00 
2020-06-011002310111:00:00 
2020-06-011003610117:00:00 
2020-06-02100330306:00:00 
2020-06-021008330312:00:00 
2020-06-021009630318: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-071001FDnullnull