[ milost @ 08.01.2001. 07:34 ] @
Rade li uopste ugnjezdeni upiti (mislim na SELECT ... u okviru drugog SELECT-a) u MySQL-u?
Znam da ranije verzije to nisu podrzavale, ali zna li neko da li je to sada dostupno, i kako to radi?

Hvala unapred...
[ Gojko Vujovic @ 08.01.2001. 14:22 ] @
Trenutno ne rade ali su na to-do listi za sledecu verziju ili neku skorasnju uglavnom. Subselect je verovatno najvise zamerana stvar MySQL-u.

Zasto do sada nije implementirano? Jednostavno - ceo MySQL je pravljen da radi izuzetno brzo i sve je optimizovano koliko se moglo. Subselect dosta usporava rad i treba ga sto manje koristiti. Sve se moze postici join-ovima, to je barem lako. Razmisli malo. Ako ti treba primer reci cu ti ali ko zna kako radi left join znace i ovo da resi sigurno. Tako da subselect ostaje uglavnom nepotreban i prespor. Mozda ce cak i kad ga implementiraju biti neka vrsta join-a jer sigurno nece dozvoliti da im nesto tako uspori ovako brzu bazu
[ milost @ 10.01.2001. 08:48 ] @
Citat:
Gojko wrote:
Jednostavno - ceo MySQL je pravljen da radi izuzetno brzo i sve je optimizovano koliko se moglo. Subselect dosta usporava rad i treba ga sto manje koristiti. Sve se moze postici join-ovima, to je barem lako.


Hvala na odgovoru, nego kad smo vec kod JOIN-a... Kakva su vam iskustva sa OUTHER JOIN-om?
[ Gojko Vujovic @ 10.01.2001. 13:02 ] @
nema tu iskustva, znam kako se koristi. jel te zanima ?
[ milost @ 10.01.2001. 14:06 ] @
Citat:
Gojko wrote:
nema tu iskustva, znam kako se koristi. jel te zanima ?


Hvala, za sada mi samo treba potvrda da to sljaka bez problema (sto naravno nije cudno za MySQL )
Ovde se lozimo neko vreme da prebacimo neke stvari sa Oracle-a, pa da vidimo ko je brzi ...
[ Gojko Vujovic @ 10.01.2001. 18:00 ] @
Nemoj se zahvaljivati molim te nema potrebe.. uobrazicemo se.. ok ako smo stvarno pomogli ali ne mora za svaku stvarcicu..

A sto se tice brzine, take a look:


http://www.mysql.com/information/benchmarks.html
[ naum @ 25.04.2001. 10:55 ] @
Citat:
Gojko wrote:
Sve se moze postici join-ovima, to je barem lako. Razmisli malo. Ako ti treba primer reci cu ti ali ko zna kako radi left join znace i ovo da resi sigurno. Tako da subselect ostaje uglavnom nepotreban i prespor. Mozda ce cak i kad ga implementiraju biti neka vrsta join-a jer sigurno nece dozvoliti da im nesto tako uspori ovako brzu bazu :)


ne moze... podupiti sluze za stvari tipa:
DELETE FROM user WHERE user_id in (SELECT user_id_user FROM user_group WHERE group_id_group = 5);

[Ovu poruku je menjao naum dana 04-25-2001 u 10:56 AM GMT]
[ tOwk @ 14.05.2001. 21:56 ] @
PostgreSQLd - mogu ugnjezdeni upiti, medjutim mnogi kazu da je sporiji od MySQL... Imam ih oba instalirana, ali nisam poredio brzine :)

Zasto koristiti MySQL kada postoji i drugo opensource resenje... Usput, PostgreSQLd je Objektna baza (ne znam mnogo o tome, ali to je novija vrsta relacione baze, mozda ce ta informacija znaciti nekome ko se time bavi :).
[ mire @ 16.05.2001. 14:50 ] @
MySql u novim verzijama ima tabele kod kojih rade transakcije.
Postgres treba da bude malo sporiji od mysql-a ali to mu ne smanjuje upotrebljivost. Ima nasledjivanje tabela, nizove kao polja i sl. ...

[ mika @ 18.05.2001. 08:00 ] @

Kad smo vec kod topic-a... kako u MySQL-u da realizujem upit tipa:

SELECT polje FROM tabela WHERE polje NOT IN (SELECT polje2 FROM tabela2);

Pomagajte, ovo me mucilo nocas u p* materinu!!!


P.S. Nije valjda da je nemoguce?
[ milost @ 25.05.2001. 11:27 ] @
Citat:
mika je napisao:

Kad smo vec kod topic-a... kako u MySQL-u da realizujem upit tipa:

SELECT polje FROM tabela WHERE polje NOT IN (SELECT polje2 FROM tabela2);

Pomagajte, ovo me mucilo nocas u p* materinu!!! :(


P.S. Nije valjda da je nemoguce? :(


A jel' mora bas u MySQL-u ?
Iz, recimo, PHP-a ne bi bio neki problem...
[ mire @ 25.05.2001. 18:13 ] @

npr. ovako:

select tabela.polje from tabela left join tabela2 on tabela.polje=tabela2.polje2 where tabela2.polje is null;

ovo je left join koji simulira subquery.

ako nemas persistant database konekcije normalno pokrenes prvi upit, smestis rezultat u neku promenljivu (znam da ovo radi ali nisam ulazio dublje u tematiku) i pokrenes drugi upit.

Ili mozes da se snadjes ako radis iz programskog jezika iz koga koristis mysql npr. da sve smestis u neku promenljivu tog jezika pa onda pokrenes drugi upit.

Citat:
mika je napisao:

Kad smo vec kod topic-a... kako u MySQL-u da realizujem upit tipa:

SELECT polje FROM tabela WHERE polje NOT IN (SELECT polje2 FROM tabela2);


[ mika @ 28.05.2001. 08:23 ] @
Hvala ljudi.

Topic sam pregledao sa zakašnjenjem a za left join nisam znao, pravo da vam kažem. U stvari znao sam šta je ali ne i kako se koristi...

U međuvremenu sam se snašao baš kao što je neko napisao u prethodnim postovima - u dve petlje, i to tako što u spoljašnjoj prihvatam rezultat prvog upita a u unutrašnjoj na osnovu tog rezultata "filtriram" drugi upit.

Naravno, elegantnije je rešenje preko samo jednog upita.

P.S. Koja je razlika između levog i desnog spajanja ???

[Ovu poruku je menjao mika dana 05-28-2001 u 08:28 AM GMT]