Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ne znam kako da koristim ":" u mysql-u

[es] :: MySQL :: Ne znam kako da koristim ":" u mysql-u

[ Pregleda: 2861 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.251.*



+1 Profil

icon Ne znam kako da koristim ":" u mysql-u12.02.2009. u 07:56 - pre 184 meseci
Napravio sam upit
Code:
 select
        Round(SUM(Masa)/:Masa) as omjer,... 
        

u ORACLEu mi radi sasvim OK dok to ne znam izvesti u MySQL..

Moze li mi neko molim Vas pomoci oko ovog

Hvala unaprijed!

PS našao sam alternativu ako dodam umjesto :Masa
Code:

(select sum(masa) from artikli p
...))


ali nije to to :(
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.251.*



+1 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u12.02.2009. u 10:15 - pre 184 meseci
vidim da mi niko ne odgovara pa rekoh da preformulisem pitanje:)
ima li neki drugi način da napravim upit koji mi izračunava omjer na sljedeći način
pošto grupiram stavke po vrsti a omjer bi mi trebao biti (stavke jedne vrste)/(ukupno sve stavke)

U oracleu se to može riješiti sa onom dvotačkom što sam naveo gore.. a u mysqlu sam uspio riješiti samo sa dodatim selectom koji sabira sve stavke i dijeli sa pojedinom vrstom...

ovo mi nije baš najefikasnije rješenje pošto ovog ima dosta i često se ponavlja, a i puno je parametara u where pa dobijem kilometarske upite i select u selectu se cesto ponavlja sto mi usporava izvršavanje upita..

Još jednom hvala unaprijed
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.xdsl.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u12.02.2009. u 12:13 - pre 184 meseci
nisu bas svi experti za oracle ovde (ni ja nisam neki oracle expert ali ovo valjda znam) :) a i bogami ljudi nekad moraju da spavaju :)

tvoj oracle upit:
Code:

SELECT  Round(SUM(Masa)/:Masa) ...


ne radi "stand alone", dakle oracle ce ti traziti da bindujes :Masa za nesto. Upit bi mogao da bude i SUM(Masa)/:foobar nema nikakve razlike ... :x je varijabla koju ti moras da definises... to sto si je nazvao isto kao ime kolone u tabeli samo izaziva pometnju (dal sam naglasio da nisam oracle expert :D - slobodno me ispravi ako ovo nije tacno)

Kapiram iz drugog posta da ti je vrednost varijable :Masa u stvari suma (totalna za celu tabelu) kolone masa ...

dakle, upit je (neoptimizovan) otprilike ovako:

Code:

SELECT Round(SUM(Masa) / ( SELECT SUM(Masa) FROM t1)) FROM t1 GROUP BY nesto;


dakle za svako "nesto" daj "zbir masa tog necega" / "zbir masa svih artikala" ... (procenat kojim nesto ucestvuje u totalnoj masi ?)

e sad, da bi upit prepisao u mysql generalno umesto :X stavis @X (na mysql-u varijable su @X ne kao na oraklu :X) i varijabli moras da das vrednost "PRE UPITA" ne mozes kao na oracle-u "posle".

Code:

set @X = ( SELECT SUM(Masa) FROM t1 );
SELECT Rount(SUM(Masa)/@X) FROM t1 GROUP BY nesto;


nadam se da ti ovo resava problem i daje odgovor na pitanje....

obrati paznju da set @X = ( SELECT SUM(Masa) FROM t1 ); dodeljuje vrednost @X "trenutnu" sumu, dakle @X nije funkcija nego vrednost. Ako se izmedju set @X=... i SELECT @X .. promeni ukupna suma @X nece dobiti "novu" vrednost!! dakle:
Code:

mysql> create table t1 (a int) engine=myisam; insert into t1 values (1), (1), (1);
Query OK, 0 rows affected, 2 warnings (0.04 sec)

Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select sum(a) from t1;
+--------+
| sum(a) |
+--------+
|      3 | 
+--------+
1 row in set (0.00 sec)

mysql> set @X = ( select sum(a) from t1 );
Query OK, 0 rows affected (0.00 sec)

mysql> select @X;
+------+
| @X   |
+------+
|    3 | 
+------+
1 row in set (0.00 sec)

mysql> insert into t1 values (1);
Query OK, 1 row affected (0.00 sec)

mysql> select sum(a) from t1;
+--------+
| sum(a) |
+--------+
|      4 | 
+--------+
1 row in set (0.00 sec)

mysql> select @X;
+------+
| @X   |
+------+
|    3 | 
+------+
1 row in set (0.00 sec)


nemam pojma da li oracle pamti onaj bind kao funkciju ili kao vrednost (mysql dakle pamti kao vrednost) ali bolje da te upozorim nego da lupas glavu sta se desava.


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.sun.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u12.02.2009. u 12:18 - pre 184 meseci
evo i primer

Code:

mysql> create table t1 (masa int, objekat char(10)) engine=myisam;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> insert into t1 values (1,'kasika'),(1, 'kasika'),(1, 'kasika'),(1, 'kasika'),(1, 'kasika'),(1, 'kasika'),(1, 'kasika'),(1, 'kasika'),(30,'tanjir'),(30,'tanjir'),(30,'tanjir'),(30,'tanjir'),(30,'tanjir'),(30,'tanjir'),(100,'sto');
Query OK, 15 rows affected (0.00 sec)
Records: 15  Duplicates: 0  Warnings: 0

mysql> select sum(masa) from t1;
+-----------+
| sum(masa) |
+-----------+
|       288 | 
+-----------+
1 row in set (0.00 sec)

mysql> select sum(masa), objekat from t1 group by objekat;
+-----------+---------+
| sum(masa) | objekat |
+-----------+---------+
|         8 | kasika  | 
|       100 | sto     | 
|       180 | tanjir  | 
+-----------+---------+
3 rows in set (0.00 sec)

mysql> set @X = ( select sum(masa) from t1 );
Query OK, 0 rows affected (0.00 sec)

mysql> select sum(masa)/@X, objekat from t1 group by objekat;
+--------------+---------+
| sum(masa)/@X | objekat |
+--------------+---------+
|       0.0278 | kasika  | 
|       0.3472 | sto     | 
|       0.6250 | tanjir  | 
+--------------+---------+
3 rows in set (0.00 sec)



 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.255.*



+1 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u12.02.2009. u 14:30 - pre 184 meseci
hvala puno na odgovorima.. sada imam sljedeci problem... imam tablicu
Code:

odjel klasa masa masauk
1      a1      10      200
1      a1      20      200
2      a1      20      300
.
.
.



napravio sam jednu tablicu u koju sam za svaki odjel po artiklu sumirao mase
interesuje me kako, pošto mi je u polju masauk ista vrijednost, masu dijelim sa sumom masauk pojedinog odjela
ne mogu nikako da dobijem vrijednost sume masauk jer mi sabere istu masu više puta(koliko imam pojedinih odjela za artikal)

hvala puno
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.sun.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u12.02.2009. u 14:53 - pre 184 meseci
e sad te nista pod milim bogom nisam razumeo :(

tabela koju si stavio mi deluje da ima za jedan "odjel" uvek istu masu za "masauk" .. to si tako hteo? da li je to ukupna masa tog odjela?
koju sad vrednost sume hoces da dobijes? sta hoces da sumiras?

ako hoces sumu za jedan odjel - to ti je "select masauk from t1 where odjel= kojivecodjeloces;"
ako hoces sumu svih odjela zajedno onda "select sum(masa) from (select masa from t1 group by odjel) x;" (nije bas najoptimizovanije ali obzirom na to koliko je optimizovana ta tabela ...)
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.244.*



+1 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u13.02.2009. u 06:24 - pre 184 meseci
hvala ti bogdane najljepsa... ideja mi je da pored tablica stavki napravim jednu obračunsku tablicu iz koje bih izvlačio izvještaje. Tako, kada se nešto proknjiži, za svaki odjel sumiraju se stavke po artiklu a zadnje polje mi je rezervisano za ukupno masa za taj odjel.

Problem mi također predstavlja što je tu pored odjela i više firmi, dakle još jedno polje firma. Pa tako imamo više odjela u jednoj firmi i više firmi. (al ga zapetlja)

Kod jednog izvještaja trebam uraditi na toj tablici računarsku radnju da mi za jednu firmu izbavi ukCijenu/ sa UKmasom koja je u zadnjem polju i pojavljuje se više puta pa je ne mogu (sum) već ću pokušati bogdanov drugi prijedlog.

Ako neko ima neki prijedlog, molim da se javi.. hvala puno
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.244.*



+1 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u13.02.2009. u 09:34 - pre 184 meseci
@bogdanov "select sum(masa) from (select masa from t1 group by odjel) x;" je upalio!!! nekako sam to strpao u @varijablu i sada radi.. još jednom da se zahvalim.

PS ima li negdje neka knjiga/skripta i sl gdje se mogu vidjeti slični primjeri.. još nisam radio upite na ovaj način.. i ovaj alias x mi je do sad bio nepoznat. Volio bih da mogu negdje pročitati o ovome kao i o optimizaciji na konkretnim primjerima.. hvala još jedanput!
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u13.02.2009. u 10:43 - pre 184 meseci
najbolje mesto za start je http://downloads.mysql.com/docs/refman-5.1-en.a4.pdf

Nije jos izasla knjiga za sertifikaciju za 5.1 ali to ce biti sledece mesto sa najvise podataka.

Postoji ogromna gomiletina knjiga o MySQL-u mnoge pokrivaju i 5.1, subselect, alias i slicno radi uveliko jos u 5.0 tako da bi ti i knjiga za spremanje sertifikacije za 5.0 odradila posao po tom pitanju

neke ok knjige su
http://www.freebookspot.org/Comments.aspx?Element_ID=2788
http://www.freebookspot.org/Comments.aspx?Element_ID=1775
http://www.freebookspot.org/Comments.aspx?Element_ID=1547
http://www.freebookspot.org/Comments.aspx?Element_ID=681

 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.243.*



+1 Profil

icon Re: Ne znam kako da koristim ":" u mysql-u13.02.2009. u 12:33 - pre 184 meseci
@bogdan.kecman legenda si!!
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

[es] :: MySQL :: Ne znam kako da koristim ":" u mysql-u

[ Pregleda: 2861 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.