Select pro vyber "der"

Martin Horak pop3MH1 na sce.cz
Pondělí Listopad 8 15:12:38 CET 1999


> > > Jakozto zacatecnik s SQL jsem narazil na nasledujici problem:
> > > V tabulce ve sloupci dejme tomu ID je _temer_ souvisla rada cisel.
> > > Potrebuji ted napsat SELECT, ktery by vybral "diry" v teto rade
> > > (prakticky - porebuji pridelit nejnizsi volnou IP adresu).
> > > Myslel jsem, ze by to vyresil nasledujici SELECT:
> > > select ID + 1 from tab A
> > > where not exist(
> > >   select ID from tab B
> > >   where A.ID = B.ID + 1
> > > );
> >
> > Tohle je IMHO dost silena konstrukce. Predpokladam, ze tabuky A a B
> > jsou identicke. Pak to znamena, ze hledas naslednika takoveho ID o
> > kterem plati, ze ono samo neni naslednikem zadneho ID.
> >
> K te syntaxi: A a B jsou aliasy pro tabulku tab. Tzn. ze oznacuji ta sama
> data. Jinak se mi ta uvaha zda spravna. A jestli nejaka DB neumi vnoreny
> select, tak to je blbe.
> 
> Radim
> 
Ano, mate pravdu - prohodil jsem hodnoty v druhe podmince.
Spravne tedy:
SELECT id+1 FROM tab a
WHERE NOT EXIST(
  SELECT FROM tab b
  WHERE b.id = a.id + 1
);
Ale problem s MySQL to neresi...:(


--
Ing. Martin Horak
SCE a.s. Decin
pop3MH1 na sce.cz


Další informace o konferenci Test