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

Pomoc oko jednog MySQL upita

[es] :: MySQL :: Pomoc oko jednog MySQL upita

[ Pregleda: 2328 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bokini

Član broj: 7372
Poruke: 101
*.verat.net



Profil

icon Pomoc oko jednog MySQL upita18.09.2003. u 00:55 - pre 220 meseci
Pozdrav,

potrebna mi je pomoc oko jednog MySQL upita:

Imam 3 proste tabele
Prva tablela "stavke" ima polja:
Id INT AUTOICREMENT
datum DATE

Druge 2 tabele "ulazi" i "izlazi" su iste:
Id INT AUTOICREMENT
stavka_id INT
iznos DECIMAL(18, 2)

Za svaki record unet u tabelu "stavke" ja mogu da unesem po vise stavki u "ulaze" i/ili "izlaze" i da ih povezem pomocu stavka_id polja sa stavke.id. Dakle oko unosenja podataka nema problema, ali:

Kada hocu da prikazem:
id, datum, zbir ulaza, zbir izlaza imam cudnih rezultata, suma u koloni za zbir ulaza se duplira !?

Code:

SELECT
stavke.id, stavke.datum, SUM(ulazi.iznos), SUM(izlazi.iznos)
FROM stavke, ulazi, izlazi
WHERE stavke.id = ulazi.stavka_id AND stavke.id = izlazi.stavka_id 
GROUP BY (stavke.id)


Da li neko moze da mi kaze gde gresim i kako to da ispravim.
Ispod posta sam ubacio mysqldump izvestaj ako neko zeli da proba da izvrsi.

Hvala najlepse na pomoci.
Bojan

Code:

# MySQL-Front Dump 2.5
#
# Host: localhost   Database: store
# --------------------------------------------------------
# Server version 4.1.0-alpha-max-nt

USE store;


#
# Table structure for table 'izlazi'
#

DROP TABLE IF EXISTS `izlazi`;
CREATE TABLE `izlazi` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `stavka_id` int(11) default NULL,
  `iznos` decimal(18,2) default NULL,
  `neplaceno` decimal(18,2) default NULL,
  `komentar` char(64) default NULL,
  UNIQUE KEY `id` (`id`),
  KEY `id_2` (`id`)
) ENGINE=MyISAM CHARSET=latin1;



#
# Dumping data for table 'izlazi'
#

INSERT INTO `izlazi` (`id`, `stavka_id`, `iznos`, `neplaceno`, `komentar`) VALUES("1", "1", "2.00", "4.00", "");
INSERT INTO `izlazi` (`id`, `stavka_id`, `iznos`, `neplaceno`, `komentar`) VALUES("2", "1", "3.00", "4.00", "");
INSERT INTO `izlazi` (`id`, `stavka_id`, `iznos`, `neplaceno`, `komentar`) VALUES("3", "2", NULL, NULL, "");
INSERT INTO `izlazi` (`id`, `stavka_id`, `iznos`, `neplaceno`, `komentar`) VALUES("4", "2", NULL, NULL, "");


#
# Table structure for table 'stavke'
#

DROP TABLE IF EXISTS `stavke`;
CREATE TABLE `stavke` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `datum` date default NULL,
  UNIQUE KEY `id` (`id`),
  KEY `id_2` (`id`)
) ENGINE=MyISAM CHARSET=latin1;



#
# Dumping data for table 'stavke'
#

INSERT INTO `stavke` (`id`, `datum`) VALUES("1", "2003-09-18");
INSERT INTO `stavke` (`id`, `datum`) VALUES("2", "2003-09-18");


#
# Table structure for table 'ulazi'
#

DROP TABLE IF EXISTS `ulazi`;
CREATE TABLE `ulazi` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `stavka_id` int(11) default NULL,
  `iznos` decimal(18,2) default NULL,
  `neplaceno` decimal(18,2) default NULL,
  `komentar` char(64) default NULL,
  UNIQUE KEY `id` (`id`),
  KEY `id_2` (`id`)
) ENGINE=MyISAM CHARSET=latin1;



#
# Dumping data for table 'ulazi'
#

INSERT INTO `ulazi` (`id`, `stavka_id`, `iznos`, `neplaceno`, `komentar`) VALUES("1", "1", "2.00", "0.00", NULL);
INSERT INTO `ulazi` (`id`, `stavka_id`, `iznos`, `neplaceno`, `komentar`) VALUES("2", "2", "5.00", "0.00", "");
 
Odgovor na temu

bOkIcA
Bojan Abramovic
Novi Sad

Član broj: 1808
Poruke: 520
*.metrohive.net

Sajt: www.bokica.com


Profil

icon Re: Pomoc oko jednog MySQL upita18.09.2003. u 01:49 - pre 220 meseci
Takve stvari ne mozes da radis sa WHERE-om, nego moras da koristis JOIN.
Procitaj malo o JOIN-u.

Code:
SELECT SUM( ulazi.iznos ),
       SUM( izlazi.iznos ),
       ulazi.id,
       stavke.datum
FROM stavke
   INNER JOIN ulazi ON (stavke.id = ulazi.id)
   INNER JOIN izlazi ON (ulazi.id = izlazi.id)
GROUP BY ulazi.id, stavke.datum

Nisam se previse udubljivao u tvoj post, pa nisam siguran da je ovo sto tebi treba.
 
Odgovor na temu

bokini

Član broj: 7372
Poruke: 101
217.26.66.*



Profil

icon Re: Pomoc oko jednog MySQL upita18.09.2003. u 02:06 - pre 220 meseci
Pozdrav, hvala na odgovoru

Nazalost, ne radi.

Ja vrlo slabo znam da radim sa JOIN -om a resenje mi treba hitno.

Da li negde ima neki dobar tuturial na webu za rad sa JOIN om u MySQL, da mogu da resim ovaj problem sto pre , jer nemam ni jednu knjigu za rad sa sql-om.

Ako neko zna kako da ovo proradi, bio bih mu veoma zahvalan.
Hvala
Bojan
 
Odgovor na temu

bOkIcA
Bojan Abramovic
Novi Sad

Član broj: 1808
Poruke: 520
*.metrohive.net

Sajt: www.bokica.com


Profil

icon Re: Pomoc oko jednog MySQL upita18.09.2003. u 03:27 - pre 220 meseci
Izivni imenjace, ali sta tu ima da ne radi?!

Kod nije ispravan ili ti ne daje zeljeni rezultat?
 
Odgovor na temu

Last Man Standing
Misha Kostich
Chicago

Član broj: 3775
Poruke: 101
*.client.attbi.com



+1 Profil

icon Re: Pomoc oko jednog MySQL upita18.09.2003. u 03:48 - pre 220 meseci
Citat:
SELECT
stavke.id, stavke.datum, SUM(ulazi.iznos), SUM(izlazi.iznos)
FROM stavke, ulazi, izlazi
WHERE stavke.id = ulazi.stavka_id AND stavke.id = izlazi.stavka_id
GROUP BY (stavke.id)


U Group By moras da stavis sve sto imas u Select-u, osim agregatnih funkcija (sum, max itd.) Nesto kao:

SELECT
stavke.id, stavke.datum, SUM(ulazi.iznos), SUM(izlazi.iznos)
FROM stavke, ulazi, izlazi
WHERE stavke.id = ulazi.stavka_id AND stavke.id = izlazi.stavka_id
GROUP BY stavke.id, stavke.datum


U suprotnom efekat je isti kao i da nemas Group By.

Bokice, obican ili inner join ima isti efekat kao i where clausula (tacnije to je njen specijalan slucaj). Ne moras da dajes odgovor ako nesto ne znas. Niko ti nece zameriti.
A computer once beat me at chess, but it was no match for me at kick boxing.
 
Odgovor na temu

[es] :: MySQL :: Pomoc oko jednog MySQL upita

[ Pregleda: 2328 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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