Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.666 pregleda

Najnovija ↓

Upit - deluje prosto, ali nikako da ga resim. 22.04.2020. u 23:39 · pre 79 meseci #1
Evo test date:

Code:

CREATE TABLE `test` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `MemberID` int(11) DEFAULT NULL,
  `Year` int(11) DEFAULT NULL,
  `Ammount` decimal(11,0) DEFAULT NULL,
  PRIMARY KEY (`ID`)
)

INSERT INTO `test` (`ID`, `MemberID`, `Year`, `Ammount`) VALUES 
  (1, 1, 2015, 500),
  (2, 2, 2016, 1000),
  (3, 1, 2016, 1000),
  (4, 1, 2014, 1000),
  (5, 2, 2017, 1000),
  (6, 2, 2018, 1000),
  (7, 2, 2019, 1000),
  (8, 2, 2020, 1000),
  (9, 1, 2020, 1000),
  (10, 1, 2015, 500),
  (11, 1, 2018, 1000),
  (12, 1, 2017, 1000),
  (13, 1, 2019, 1000),
  (14, 3, 2016, 500),
  (15, 3, 2016, 500),
  (16, 3, 2017, 500),
  (17, 3, 2017, 500),
  (18, 3, 2018, 1000),
  (19, 3, 2019, 1000),
  (20, 3, 2020, 1000),
  (21, 4, 2020, 1000),
  (22, 5, 2019, 1000),
  (23, 5, 2020, 1000);


Treba mi upit koji će da izdvoji samo one koji imaju iznos u 2020 godini ali i da nemaju iznose u prethodnim godinama.
Iz prilozene test date očekivani rezultat treba da bude samo record (21, 4, 2020, 1000)

Tnx i pozdrav.

Re: Upit - deluje prosto, ali nikako da ga resim. 23.04.2020. u 01:25 · pre 79 meseci #2

Moze ovako:
Code:
SELECT ID, MemberID, Ammount, GROUP_CONCAT(DISTINCT Year) as conc FROM `test` GROUP by MemberID HAVING conc = '2020'

Sviđa mi se1
Re: Upit - deluje prosto, ali nikako da ga resim. 23.04.2020. u 09:45 · pre 79 meseci #4
Ne koristim puno MySQL, pa bih zato napisao upit koji radi na svim bazama:
Code:

  select *
  from test x
  where not exists ( select 1 from test where memberid=x.memberid and year != 2020);


Ovaj upit je dobar ako je memberid indeksiran. Sporija verzija bi bila sa NOT IN konstrukcijom gde mi unutrašnji upit vratio memberid onih koji su imali uplatu pre 2020.
Code:

  select *
  from test x
  where memberid not in ( select distinct memberid from test where year != 2020);

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme