Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Da li je moguće samo pomoću sql-a dobiti ovakav rezultat...

  • 7 odgovora
  • 4.200 pregleda

Najnovija ↓

Da li je moguće samo pomoću sql-a dobiti ovakav rezultat... 08.06.2012. u 19:23 · pre 175 meseci #1
Code:



/********************************************************

Zdravo svima,
 
U tabeli ispod je suma koliko je svaki radnik nabrao nekog proizvoda.

Moze li se ovakav prikaz dobiti samo pomoću SQL-a, ako dođe još jedan proizvod da se automatski uključi, to također važi i za novog radnika

PS: inace radim nesto u php-u, i rijesio sam to kroz petlje i vise upita...

********************************************************/



| radnik    | proizvod1 | proizvod2 | proizvod3 |itd    |
+-----------+-----------+-----------+-------------------+
| ImePrezime| 12        | 21        | 1         | 68    |
+-----------+-----------+-----------+-----------+-------+
| ImePrezime| 23        | 16        | 44        | 18    |
+-----------+-----------+-----------+-----------+-------+
| ImePrezime| 17        | 19        | 33        | 28    |
+-----------+-----------+-----------+-----------+-------+
| ImePrezime| 17        | 33        | 4         | 18    |
+-----------+-----------+-----------+-----------+-------+


/*tabela radnik*/

CREATE TABLE `radnik` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `naziv` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
INSERT INTO `radnik` VALUES ('1', 'ImePrezime1');
INSERT INTO `radnik` VALUES ('2', 'ImePrezime2');
INSERT INTO `radnik` VALUES ('3', 'ImePrezime3');
INSERT INTO `radnik` VALUES ('4', 'ImePrezime4');
INSERT INTO `radnik` VALUES ('6', 'ImePrezime5');


/*tabela proizvod*/
CREATE TABLE `proizvod` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `naziv` varchar(255) NOT NULL,
  `tezina` double(7,3) NOT NULL DEFAULT '0.000',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO `proizvod` VALUES ('1', 'Proizvod 1', '0.350');
INSERT INTO `proizvod` VALUES ('2', 'Proizvod 2', '2.000');
INSERT INTO `proizvod` VALUES ('3', 'Proizvod 3', '0.350');
INSERT INTO `proizvod` VALUES ('4', 'Proizvod 4', '0.350');




/*tabela magacin*/
CREATE TABLE `magacin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `radnik_id` int(11) NOT NULL,
  `proizvod_id` int(11) NOT NULL,
  `kolicina` double(10,3) NOT NULL DEFAULT '0.000'
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;
INSERT INTO `magacin` VALUES ('1', '1', '1', '0.350');
INSERT INTO `magacin` VALUES ('2', '1', '1', '0.350');
INSERT INTO `magacin` VALUES ('3', '1', '2', '2.000');
INSERT INTO `magacin` VALUES ('4', '1', '1', '0.350');
INSERT INTO `magacin` VALUES ('5', '1', '2', '2.000');
INSERT INTO `magacin` VALUES ('6', '1', '4', '0.350');
INSERT INTO `magacin` VALUES ('7', '2', '1', '0.350');
INSERT INTO `magacin` VALUES ('8', '2', '3', '0.350');
INSERT INTO `magacin` VALUES ('9', '2', '4', '0.700');
INSERT INTO `magacin` VALUES ('10', '2', '4', '0.350');
INSERT INTO `magacin` VALUES ('11', '3', '1', '0.350');
INSERT INTO `magacin` VALUES ('12', '3', '3', '0.350');
INSERT INTO `magacin` VALUES ('13', '3', '3', '0.350');
INSERT INTO `magacin` VALUES ('14', '3', '3', '0.350');
INSERT INTO `magacin` VALUES ('15', '3', '4', '1.050');
INSERT INTO `magacin` VALUES ('16', '3', '4', '0.700');
INSERT INTO `magacin` VALUES ('17', '4', '1', '0.350');
INSERT INTO `magacin` VALUES ('18', '4', '1', '0.350');
INSERT INTO `magacin` VALUES ('19', '4', '3', '0.350');
INSERT INTO `magacin` VALUES ('20', '4', '4', '0.350');
INSERT INTO `magacin` VALUES ('35', '2', '1', '0.350');
INSERT INTO `magacin` VALUES ('36', '3', '1', '0.350');
INSERT INTO `magacin` VALUES ('37', '4', '1', '0.350');

Re: Da li je moguće samo pomoću sql-a dobiti ovakav rezultat... 08.06.2012. u 19:46 · pre 175 meseci #5
Aggregate table su dobre ako imas predefinisan broj kolona. U ovom slucaju broj proizvoda je proizvoljan tako da bi to iskomplikovalo query(ako je uopste moguce). Daleko bolji pristup je, kao sto je djoka_l vec predlozio, da se rezultat obradi u PHP-u.
Re: Da li je moguće samo pomoću sql-a dobiti ovakav rezultat... 09.06.2012. u 01:23 · pre 175 meseci #7
izlaz rotiran za 90 stepeni ne mozes nikako da kvalitetno dobijes ni na jednom rdbms-u na svetu i ako ti treba takav result iz baze - pogresan ti je koncept aplikacije.

Neki rdbms-i znaju da su im useri kreteni pa ti takve stvari donekle olaksavaju (oracle db na primer) dok drugi (poput mysql-a) rade na efikasnosti a ako user ne zna kako da napise app, plati support pa ga se nauci .. pomaganje u radu na pogresan nacin samo produbljuje problem

ti uz pomoc css-a (a kapiram da je ovde neki web u pitanju) taj report mozes da formatiras kako ti drago, da ga rotiras za 90 stepeni ili ne bez ikakvih problema te sa normalnim mysql upitom i malo znanja php-a, html-a i css-a mozes da resis problem da uzima ukupno mnogo manje resursa nego da bilo kojim trikovima teras mysql da ti formatira izlaz sa nepoznatim brojem kolona ..
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme