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

Mysql SQL kako da uradim SQL sintaksu za ovaj problem?

[es] :: MySQL :: Mysql SQL kako da uradim SQL sintaksu za ovaj problem?

[ Pregleda: 1777 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

codeb.s

Član broj: 67549
Poruke: 157
*.teol.net.



+1 Profil

icon Mysql SQL kako da uradim SQL sintaksu za ovaj problem?11.05.2012. u 20:16 - pre 145 meseci
Imam dve tabele u master-detail vezi u jednoj je osnovni podaci o računu
id - int (autoinc)
datum_obracuna - date
ukupno - float

i tabelu u koju dodajem pojedinačne stavke sa poljima

id -int(autoinc)
rn_id - int
datum_obracuna- date
artikal_id - int
kolicina - float

Sad trebam da uradi sql upit koji će mi u napraviti poređenje u mesecima po količini artikala sa razlikom zadnja dva meseca.

npr

tlbRacun
1 , 31.01.2012, 150
2 , 28.02.2012, 120
3, 31.03.2012, 140

tlbStavke
1, 1, artikal1, 10
2, 1, artikal2, 12
3, 2, artikal1, 15
4, 2, artikal2, 10
5, 3, artikal1, 20
6, 3, artikal2, 8

Rezultat koji trebam dobiti je

+---------------+----------------+---------------+------------------+----------+
+ artikal --------+ januar---------+februar---------+mart-------------+razlika----+
+ artikal1-------+10-------------+15--------------+20---------------+5---------+
+ artikal2-------+12-------------+10--------------+8----------------+ -2 -------+
+---------------+----------------+---------------+------------------+----------+

Kako da postavim upit?
Da li je potrebno da izvrši restruktuisanje tabela?



 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Mysql SQL kako da uradim SQL sintaksu za ovaj problem?11.05.2012. u 22:37 - pre 145 meseci
po n-ti put

daj create table .... insert into ... insert into ... kao primer, dakle da neko moze copy paste toga u svoju test bazu i da ima podatke nad kojima moze da proba da ti napravi upit ...


 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
*.teol.net.



+1 Profil

icon Re: Mysql SQL kako da uradim SQL sintaksu za ovaj problem?12.05.2012. u 07:16 - pre 145 meseci
Evo

Code:



-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Računalo: localhost
-- Vrijeme generiranja: Svi 12, 2012 u 08:17 PM
-- Verzija poslužitelja: 5.1.41
-- PHP verzija: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Baza podataka: `test1`
--

-- --------------------------------------------------------

--
-- Tablična struktura za tablicu `dobavljac`
--

CREATE TABLE IF NOT EXISTS `dobavljac` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `dobavljac` varchar(100) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Izbacivanje podataka za tablicu `dobavljac`
--

INSERT INTO `dobavljac` (`id`, `dobavljac`) VALUES
(1, 'dabavljac1');



Rezultat koji trebam dobiti je

+---------------+----------------+---------------+------------------+----------+
+ artikal --------+ 31.01.2012----+29.02.2012-----+31.03.2012-------+razlika----+
+ artikal1-------+10-------------+15--------------+20---------------+5---------+
+ artikal2-------+12-------------+10--------------+8----------------+ -2 -------+
+---------------+----------------+---------------+------------------+----------+

Kako da postavim upit?
Da li je potrebno da izvrši restruktuisanje tabela?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Mysql SQL kako da uradim SQL sintaksu za ovaj problem?13.05.2012. u 09:38 - pre 145 meseci
ne postoji upit koji od :

INSERT INTO `dobavljac` (`id`, `dobavljac`) VALUES (1, 'dabavljac1');

moze da napravi

+---------------+----------------+---------------+------------------+----------+
+ artikal --------+ 31.01.2012----+29.02.2012-----+31.03.2012-------+razlika----+
+ artikal1-------+10-------------+15--------------+20---------------+5---------+
+ artikal2-------+12-------------+10--------------+8----------------+ -2 -------+
+---------------+----------------+---------------+------------------+----------+

 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
*.teol.net.



+1 Profil

icon Re: Mysql SQL kako da uradim SQL sintaksu za ovaj problem?13.05.2012. u 11:55 - pre 145 meseci
Greška kod kopiranja SQL-a sorry ... evo opet

Code:



-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Računalo: localhost
-- Vrijeme generiranja: Svi 13, 2012 u 12:56 AM
-- Verzija poslužitelja: 5.1.41
-- PHP verzija: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Baza podataka: `test1`
--

-- --------------------------------------------------------

--
-- Tablična struktura za tablicu `arikli_rn`
--

CREATE TABLE IF NOT EXISTS `arikli_rn` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `dobavljac_id` int(11) NOT NULL,
  `obracun` date NOT NULL,
  `ukupno` float(11,2) NOT NULL,
  `zatezna_kamata` float(11,2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

--
-- Izbacivanje podataka za tablicu `arikli_rn`
--

INSERT INTO `arikli_rn` (`id`, `dobavljac_id`, `obracun`, `ukupno`, `zatezna_kamata`) VALUES
(1, 1, '2012-01-31', 150.00, 0.00),
(2, 1, '2012-02-29', 120.00, 0.00),
(3, 1, '2012-04-30', 140.00, 0.00);

-- --------------------------------------------------------

--
-- Tablična struktura za tablicu `artikli`
--

CREATE TABLE IF NOT EXISTS `artikli` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `artikal` varchar(100) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=ucs2 AUTO_INCREMENT=3 ;

--
-- Izbacivanje podataka za tablicu `artikli`
--

INSERT INTO `artikli` (`id`, `artikal`) VALUES
(1, 'Artikal 1'),
(2, 'Artikal 2');

-- --------------------------------------------------------

--
-- Tablična struktura za tablicu `artikli_stavke`
--

CREATE TABLE IF NOT EXISTS `artikli_stavke` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rn_id` int(11) NOT NULL,
  `obracun` date NOT NULL,
  `artikal_id` int(11) NOT NULL,
  `kolicina` float(11,2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

--
-- Izbacivanje podataka za tablicu `artikli_stavke`
--

INSERT INTO `artikli_stavke` (`id`, `rn_id`, `obracun`, `artikal_id`, `kolicina`) VALUES
(1, 1, '2012-01-31', 1, 10.00),
(2, 1, '2012-01-31', 2, 12.00),
(3, 2, '2012-02-29', 1, 15.00),
(4, 2, '2012-02-29', 2, 10.00),
(5, 3, '2012-03-31', 1, 20.00),
(6, 3, '2012-03-31', 2, 8.00);

-- --------------------------------------------------------

--
-- Tablična struktura za tablicu `dobavljac`
--

CREATE TABLE IF NOT EXISTS `dobavljac` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `dobavljac` varchar(100) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Izbacivanje podataka za tablicu `dobavljac`
--

INSERT INTO `dobavljac` (`id`, `dobavljac`) VALUES
(1, 'dabavljac1');



Rezultat koji trebam dobiti je

+---------------+----------------+---------------+------------------+----------+
+ artikal --------+ 31.01.2012----+29.02.2012-----+31.03.2012-------+razlika----+
+ artikal1-------+10-------------+15--------------+20---------------+5---------+
+ artikal2-------+12-------------+10--------------+8----------------+ -2 -------+
+---------------+----------------+---------------+------------------+----------+

Kako da postavim upit?
Da li je potrebno da izvrši restruktuisanje tabela?

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Mysql SQL kako da uradim SQL sintaksu za ovaj problem?13.05.2012. u 13:46 - pre 145 meseci
pitanja

1. sta je "razlika" ?
2. jel "31.01.2012, 29.02.2012 ..." dinamicno ili?

za [2] imas problem posto moras da kreiras "fixni upit" ne mozes da kreiras upit sa "nepoznatim brojem atributa u rezultatu". To eventualno mozes da uradis nekom stored procedurom mada lakse da uradis direktno u svom programu

Sto se tice "da li da redizajniram" - treba da redizajniras kako treba da ti izgleda izlaz, sama baza ti izgleda ok koliko ja vidim na prvi pogled jedino sto bi ja to nazvao bolje (npr artikli_rn.id je bolje da se zove artikal_rn.artikl_rn_id ili bar artikal_rn.rn_id .. samo id je po meni pogresno .. ista prica i za artikli_stavke.id .. etc etc
 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
*.teol.net.



+1 Profil

icon Re: Mysql SQL kako da uradim SQL sintaksu za ovaj problem?13.05.2012. u 14:21 - pre 145 meseci
Hvala na odgovoru.

Šta mi zapravo treba pokušao sam objasniti u tekstualno delu na početku. Znači, zadnji dan u mesecu se vrši obračun (to je ono 31.01.2012 ili 28.02.2012...), tada dobijam količine pojedinih artikala koje su prometovane u tom mesecu (to je u tabeli polje količina). Nadalje trebam da izvršim poređenje sa proteklim mesecom (to je polje razlika odnosno rezultat količine iz ovog i količine iz proteklog meseca). Ono što bih htio još da uradim je da mi pokazuje sve količine iz zadnja 3,6 ili 12 meseci po artiklima ali i po obračunskim danima. Možda nisam dobro skicirao ni rezultat više je trebao da prikaže tabelu.
Razliku mogu i programski da rešim...


+---------------+----------------+---------------+------------------+----------+
+ artikal --------+ 31.01.2012----+29.02.2012-----+31.03.2012-------+razlika----+
+ artikal1-------+10-------------+15--------------+20---------------+5---------+
+ artikal2-------+12-------------+10--------------+8----------------+ -2 -------+
+---------------+----------------+---------------+------------------+----------+

odgovara mi i ovakav prikaz


+---------------+ arikal1----+artikal2-----+
+ 31.01.2012---+10---------+12----------+
+ 29.02.2012---+15---------+10----------+
+-31.02.2012---+20---------+8-----------+

Mislim da je potrebno izvršiti izradu tabela ali ne znam kako?
 
Odgovor na temu

[es] :: MySQL :: Mysql SQL kako da uradim SQL sintaksu za ovaj problem?

[ Pregleda: 1777 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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