Advertisement
Guest User

Rezolvare Mysql

a guest
Jan 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 4.29 KB | None | 0 0
  1.  
  2.  
  3. --1)
  4.  create table furnizori (
  5. id int  auto_increment primary key,
  6. nume char(20),
  7. oras char(20),
  8. data_inregistrarii date
  9. );
  10.  
  11.  
  12. --2)
  13. insert into furnizori (nume, oras, data_inregistrarii)
  14.  values ('antennax','bucuresti','2001-11-20');
  15.  
  16. --3)
  17. select * from furnizori;
  18.  
  19. --4)
  20. select id_client, nume from furnizori where year(data)=2017;
  21.  
  22. --5)
  23.  select * from furnizori order by data desc;
  24. select nume_client from clienti where id_client in (select max(id_client) from clienti);
  25. --6) listati ultimul client din tabelul clienti
  26. create table clienti (
  27.     id_client int auto_increment primary key,
  28.     nume_client varchar(20) not null
  29. );
  30.  
  31. insert into clienti(nume_client) values ('Oprea');
  32.  
  33. create table medici(
  34.     id_medic int auto_increment primary key,
  35.     nume varchar(20) not null,
  36.     tel varchar(20) not null
  37. );
  38.  
  39. insert into medici(nume, tel) values ('Dr House' , '0769212146'), ('Dr Grey' , '6969696969');
  40.  
  41. create table servicii(
  42.     id_serviciu int auto_increment primary key,
  43.     nume varchar(20) not null,
  44.     pret varchar(20) not null
  45. );
  46.  
  47. insert into servicii(nume, pret) values ('Operatie' , '1500'), ('CT' , '2000'), ('Ecografie' , '300'), ('Consultanta' , '30');
  48.  
  49. create table cabinete(
  50.     id_cabinet int auto_increment primary key,
  51.     nume varchar(20) not null,
  52.     strada varchar(20) not null
  53. );
  54.  
  55. insert into cabinete(nume, strada) values ('MedLife' , 'Calea Grivitei'), ('Regina Maria' , 'Piata Victoriei');
  56.  
  57. create table programari(
  58.     id_programare int not null,
  59.     id_client int not null,
  60.     data_p date not null,
  61.     tel varchar(20) not null
  62. );
  63.  
  64. INSERT INTO `programari` (`id_programare`, `id_client`, `data_p`, `tel`) VALUES ('1', '1', '2018-01-01', '198273912');
  65.  
  66. insert into
  67.     programari(id_programare, id_client, data_p, tel)
  68. values
  69.     (1 , 1 , '2018-11-11' , '075555555'),
  70.     (2 , 1 , '2017-11-10' , '075545646'),
  71.     (1 , 2 , '2018-12-10' , '075522215'),
  72.     (2 , 2 , '2018-12-12' , '075500000'),
  73.     (3 , 3 , '2018-05-21' , '075558798');   ;
  74.  
  75. INSERT INTO `servicii_prestate` (`id`, `id_serviciu`, `id_programare`, `id_cabinet`, `id_medic`, `ora`, `data`) VALUES ('1', '1', '1', '1', '1', '12:00:00', '2018-01-02');
  76. --7) afisati toate serviciile ce urmeaza sa fie prestate astazi in cabinetul cu id 1 ordonate desc dupa ora programarii
  77. select
  78.     s.nume, s.pret
  79. from servicii as s
  80. inner join programari as p
  81.     on s.id_serviciu = p.id_serviciu
  82. inner join servicii_prestate as sp
  83.     on sp.id_programare = p.id_programare
  84. where servicii_prestate.id_cabinet = 1
  85.     and p.data_p = CURDATE()
  86. order by p.data_p desc;
  87.  
  88.  
  89.  
  90. --11) afisati toti medicii (id) impreuna cu media valorii totale a serviciilor
  91. -- prestate de fiecare, dar numai pentru medicii
  92. -- care au prestat cel putin doua servicii
  93.  
  94. select
  95.     m.id_medic,
  96.     avg(s.pret) as pret_mediu
  97. from medici as m
  98. inner join servicii_prestate as sp
  99.     on m.id_medic = sp.id_medic
  100. inner join servicii as s
  101.     on sp.id_serviciu = s.id_serviciu
  102. where
  103.     (select count(id_serviciu) from servicii) > 2
  104. group by m.id_medic;
  105.  
  106.  
  107.  -- 12) stergeti programarea cu id 1 precum si toate serviciile prestate in cadrul ei
  108. DELETE p, sp
  109.       FROM programari p
  110.       JOIN servicii_prestate sp ON sp.id_programare = p.id_programare
  111.      WHERE p.id_programare = 1;
  112.  
  113.  delete from programari where id_programare in (select sp.id_programare, sp.id_serviciu from servicii_prestate as sp inner join programari as p
  114. where sp.id_programare=p.id_programare and id_programare=1);
  115.  
  116. -- 13) scadeti cu o unitate pretul serviciilor ce nu au fost prestate niciodata
  117. update servicii set pret=pret-1 where id_serviciu not in (select id_serviciu from servicii_prestate);
  118.  
  119. -- 14) modificati tipul coloanei nume din servicii sa fie de tipul char(40)
  120. alter table servicii modify nume char(40);
  121.  
  122. -- 15) afisati toate cabinetele (id) impreuna cu suma totala a serviciilor prestate in ele.
  123. -- in cabinetele unde nu au fost prestate servicii se va afisa suma totala 0
  124. ALTER TABLE `cabinete` ADD `suma_totala` VARCHAR(20) NOT NULL DEFAULT '0' AFTER `strada`;
  125.  
  126. -- 16) reduceti cu 10% valoarea programarilor de azi si cu 20% valoarea programarilor de ieri
  127. -- o singura interogare
  128. -- data de azi = CURDATE()
  129. -- data de ieri = date_add(CURDATE(), interval 1 day)
  130. --  todo: pune inserturile toate
  131. update programari
  132.     set valoare=valoare-(0.2*valoare)
  133. where  
  134.     data_p = CURDATE()
  135. or
  136.     data_p = CURDATE() - 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement