Documente Academic
Documente Profesional
Documente Cultură
AGENTIE IMOBILIARA
Reguli de gestiune:
1. Un proprietar poate detine unul sau mai multe imobile, un imobil poate avea un
singur proprietar.
2. Un contract de vazare cumparare sau de inchiriere este semnat intre un client si un
proprietar avand ca intermediar societatea.
3. Pentru o imobilzare se pot incheia mai multe contracte.
4. Un agent poate incheia unul sau mai multe contracte, un contract este incheiat de
un singur agent.
5. O factura este emisa pentru un singur contract.
6. O factura poate fi platita prin mai multe ordine de plata,printr-un ordin de plata se
pot plati mai multe facturi.
NumeSalariat
AdresaSalariat
DataAngajarii
Salariudeincadrare
CodProprietar
CodClient
NumeProprietar
AdresaProprietar
TelefonProprietar
CodContract
CodImobilizare
NumeClient
TelefonClient
Cerere
Bugetmaxim
Serviciu
Codimobilizare
TipImobilizare
Suprafata
Adresaimobilizare
Pret/mp
NumarContract
NumarFactura
NumarOp
DataContract
TipContract
CodClient (R2)
CodProprietar (R2)
CNP (R4)
DataEmitereFactura
DataScadentaFactura
NumarContract (R5)
DataOP
NumarFactura
NumarOp
d) Atribute izolate
Codimobilizare
NumarFactura
Valoarecontract
NumarContract
ValoarePlatita
NumarOp
f) Tabele:
1. Angajati(CNP, NumeSalariat, AdresaSalariat, DataAngajarii, Salariudeincadrare)
2. Proprietari(CodProprietar, NumeProprietar, AdresaProprietar ,
TelefonProprietar,CodContract,CodImobilizare)
3. Clienti(CodClient, NumeClient,AdresaClient, TelefonClient, Bugetmaxim)
4. Imobilizari(Codimobilizare, TipImobilizare, Suprafata,
Adresaimobilizare,Pret/mpVandut,Pret/Inchiriat)
5. Contracte(NumarContract, DataContract, CodClient ,CodProprietar, CNP)
6. Facturi(NumarFactura, DataEmitereFactura, DataScadentaFactura,
NumarContract)
7. OP(NumarOp, DataOP)
8. ContracteImobilizari(Codimobilizare,NumarContract, Valoarecontract)
9. FacturiOP(NumarOp,NumarFactura, ValoarePlatita)
In tabela Angajati se impun urmatoarele restrictii:
a) CNP va fi de tip Text si va admite obligatoriu 13 caractere numerice
b) Comision implicit 20 %
INTEROGARI:
Interogari de selectie
1. Sa se afiseze clienti care sunt din provincie si doresc sa cumparare apartamente cu 3
camere la un buget maxim de 550000.
Interogari de Actiune
1) De creare a unei noi tabele(Make Table)
a) Sa se creeze o tabela noua care sa contina contractele a caror valoare depaseste 50000.
c) Sa se creeze o tabela in care sa se afiseze valoarea facturi ca fiind 2% din valoarea contractului
semnat la care se adauga TVA 24%.
2) Update
Sa se adauge la salariu de incadrare o crestere de 25%.
3) Append
Sa se adauge la tabela ContracteMake si contractele semnate pentru inchiriere.
4) De stergere:
Sa se stearga din tabela VechimeMake angajati care sunt din Iasi.
4. De totalizare
a)Sa se calculeze fondul brut de salariu pentru toti angajati.
5. Parametrizate
a) Sa se afiseze salariati angajati intr-o anumita date perioada.
b)Sa se afiseze contactele semnate pentru imobilizarile pentru care doreste utilizatorul s si intr-o
anumita perioada.
6. De tip Crosstab
a) Sa se afiseze valoare totala a contractelor pe angajati si pe tipuri de contracte.
Formulare
a) Sa se creeze un formular care sa permita gestionarea tabelei Proprietari imobilizari.
b) Sa se defineaca un formular pentru gestionarea contractelor din BD.
Rapoarte
a)Sa se creeze un raport care sa reflecte situatia contractelor semnate de fiecare agent pe
o anumita perioada.
b) Sa se creeze un raport privind situatia salarii acordate angajatilor pe localitatea din care
fac parte .
Interogari SQL
1. Sa afiseze toate imobilizarile din tipul terenuri care au o suprafata mai mare de 50
mp.
SELECT Imobilizari.CodImobilizare, Imobilizari.TipImobilizare,
Imobilizari.Suprafata, Imobilizari.AdresaImobilizare, Imobilizari.[Pret/mpVandut],
Imobilizari.[Pret/Inchiriat]
FROM Imobilizari
WHERE (((Imobilizari.TipImobilizare) Like "teren") AND
((Imobilizari.Suprafata)>50));
2. Sa se afiseze angajati de sex masculin cu o vechime mai mare de 5 ani.
SELECT VechimeMake.NumeSalariat, VechimeMake.AdresaSalariat,
VechimeMake.Vechime
FROM VechimeMake
WHERE ((Val(Left([CNP],1))="1"))
GROUP BY VechimeMake.NumeSalariat, VechimeMake.AdresaSalariat,
VechimeMake.Vechime
HAVING (((VechimeMake.Vechime)>5));
3. Sa se determine numarul de clienti care au incheiat contracte pe diferite tipuri de servici in
trimestrele 1 si 2 ale anului trecut.
TRANSFORM Count(Contracte.CodClient) AS CountOfCodClient
SELECT Contracte.TipContract
FROM Contracte
WHERE ((DatePart("q",[DataContract]) In (1,2) And Year([DataContract])=Year(Date())-1))
GROUP BY Contracte.TipContract
PIVOT Contracte.DataContract;
4. Sa se afiseze lista ordonata alfabetic cu numele clientilor care au o cerere pentru
apartamente cu 2 camere.
SELECT Clienti.CodClient, Clienti.NumeClient, Clienti.Cerere
FROM Clienti
WHERE (((Clienti.Cerere) Like "2 cam"))
ORDER BY Clienti.NumeClient;
5. Sa se construieasca o tabela in care sa se introduca coloana achitata integral sau nu in
tabela facturi.
SELECT distinct Facturi1.NumarFactura, Facturi1.DataEmitereFactura,
Facturi1.DataScadentaFactura, Facturi1.NumarContract, Facturi1.ValoareFactura,
IIf([ValoarePlatita]>=[ValoareFactura],"DA","NU") AS Platit
FROM Facturi1 INNER JOIN (Op INNER JOIN FacturiOP ON Op.NumarOP =
FacturiOP.NumarOP) ON Facturi1.NumarFactura = FacturiOP.NumarFactura;
6. Sa se totalizeze pe fiecare tip de imobilizare care este de vanzare de tip apartament valoarea
totala a facturi.
SELECT Imobilizari.TipImobilizare, Sum(Facturi1.ValoareFactura) AS
SumOfValoareFactura
FROM Imobilizari INNER JOIN (Contracteimobilizari LEFT JOIN Facturi1 ON
Contracteimobilizari.NrContract = Facturi1.NumarContract) ON
Imobilizari.CodImobilizare = Contracteimobilizari.CodImobilizare
GROUP BY Imobilizari.TipImobilizare, Imobilizari.[Pret/Inchiriat]
HAVING (((Imobilizari.TipImobilizare) Like "apartament *") AND ((Imobilizari.
[Pret/Inchiriat])=0));
7. Sa se stearga din tabela Facturi1 inregistrarilele a cororb data de emitere este inaintevde
2009 si a caror valoare este sub 50.
DELETE Facturi1.DataEmitereFactura, Facturi1.ValoareFactura
FROM Facturi1
WHERE ((Year([dataemiterefactura])<2009) AND ((Facturi1.ValoareFactura)<50));
8. Sa se majoreze valoarea contractului cu 2%.
UPDATE Contracteimobilizari
SET Contracteimobilizari.ValoareContract = 0.02*[valoareContract]+[ValoareContract];
9. Sa se realizeze o interogare de tip union si sa se formeze o tabela cu persoanele din BD a
societati(Clienti si proprietari)
Select CodClient as CodPersoana,NumeClient As NumePersoana
From Clienti
union
select CodProprietar as CodPersoana,NumeProprietar As NumePersoana
From Proprietari;
10. Sa se afiseze contractele care au valoarea mai mare ca contractele de tip inchiriere.
SELECT Contracte.NumarContract, Contracte.TipContract
FROM Contracte INNER JOIN Contracteimobilizari
ON Contracte.NumarContract = Contracteimobilizari.NrContract
Group by Contracte.NumarContract
Having sum(Contracteimobilizari.ValoareContract)>
(Select(sum(Contracteimobilizari.ValoareContract)
FROM Contracte INNER JOIN Contracteimobilizari
ON Contracte.NumarContract = Contracteimobilizari.NrContract
Group by Contracte.NumarContract
HAVING Contracte.TipContract="inchiriere");
11. Sa se afiseze valoare contractelor pe clienti si proprietari semnate in primul trimestru al
anului.
TRANSFORM Sum(Contracteimobilizari.ValoareContract) AS SumOfValoareContract
SELECT Clienti.NumeClient
FROM (Proprietari INNER JOIN (Clienti INNER JOIN Contracte ON Clienti.CodClient =
Contracte.CodClient) ON Proprietari.CodProprietar = Contracte.CodProprietar) INNER JOIN
Contracteimobilizari ON Contracte.NumarContract = Contracteimobilizari.NrContract
WHERE (((Contracte.DataContract)=DatePart("q",[DataContract])=1 And
Year([DataContract])=Year(Date())-1))
GROUP BY Clienti.NumeClient
PIVOT Proprietari.NumeProprietar;
12. Sa se afiseze facturile emise intr-o anumita perioada.
SELECT Facturi.NumarFactura, Facturi.DataEmitereFactura, Facturi.DataScadentaFactura,
Facturi.NumarContract
FROM Facturi
WHERE (((Facturi.DataEmitereFactura) Between [Introduceti data inceput] And
[Introduceti data sfarsit]));