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

Nepravilno ispisivanje iz baze

[es] :: MySQL :: Nepravilno ispisivanje iz baze

[ Pregleda: 1934 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

weleb

Član broj: 284399
Poruke: 38
*.adsl.net.t-com.hr.



Profil

icon Nepravilno ispisivanje iz baze01.10.2012. u 18:52 - pre 140 meseci
Problem je slijedeći imam 3 tablice koje povezujem (products, categoyr, subcategory):

PRODUCTS
Code:

Column    Type
id_pro    int(11)
sifra_pro    varchar(25)
id_kat    int(10)
naziv_pro    varchar(60)
opis_pro    varchar(255)
slika_v    varchar(255)
slika_m    varchar(255)
id_sub    int(10)


CATEGORY
Code:

Column    Type
id_kat    int(11)
parent    int(10)
naziv_kat    varchar(60)


SUBCATEGORY
Code:

Column    Type
id_sub_kat    int(11)
id_kat_parent    int(10)
naziv_sub_kat    varchar(60)
slika_kat_v    varchar(255)


povezujem ih ovako na jednom primjeru (za 3. kategoriju):

Code:

SELECT * FROM products JOIN category ON products.id_kat = category.id_kat LEFT JOIN subcategory ON category.id_kat=subcategory.id_kat_parent
 WHERE category.id_kat=3 ORDER BY sifra_pro



I sada ideja je da jedan proizvod mora imati glavnu kategoriju koja ali ne i subkategoriju, no ukoliko ima subkategoriju da se ona ispiše (php stranica je) i u ideji sve radi samo problem nastaje što mi generira 6 istih proizvoda (šifra, id itd) sa svim različitim podkategorijama koje postoje znači jednom proizvodu koji ima podkategoriju dodjeluje sve moguće podkategorije umjesto jedne koja treba bit

Znači rezultat bi trebao biti (sadržaj je improviziran):
111111 - Lopta - Glavna kategorija 1 - Subkategorija 1

A meni ispiše:
111111 - Lopta - Glavna kategorija 1 - Subkategorija 1
111111 - Lopta - Glavna kategorija 1 - Subkategorija 2
111111 - Lopta - Glavna kategorija 1 - Subkategorija 3
111111 - Lopta - Glavna kategorija 1 - Subkategorija 4
111111 - Lopta - Glavna kategorija 1 - Subkategorija 5
111111 - Lopta - Glavna kategorija 1 - Subkategorija 6
 
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: Nepravilno ispisivanje iz baze01.10.2012. u 19:51 - pre 140 meseci
napravis lepo jedan posto u kome

1. stavis sve create za sve te tabele koje se koriste
2. stavis insert into... za sve te tabele da ih napunis nekim podacima

1+2 ja lepo copy/paste u moj mysql i on iskreira sta treba

3. onda napises sta hoces da dobijes kao izlaz od tih podataka


 
Odgovor na temu

weleb

Član broj: 284399
Poruke: 38
*.adsl.net.t-com.hr.



Profil

icon Re: Nepravilno ispisivanje iz baze01.10.2012. u 20:35 - pre 140 meseci
Code:

CREATE TABLE IF NOT EXISTS `category` (
  `id_kat` int(11) NOT NULL AUTO_INCREMENT,
  `parent` int(10) DEFAULT '0',
  `naziv_kat` varchar(60) DEFAULT NULL,
  PRIMARY KEY (`id_kat`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6;

--
-- Dumping data for table `category`
--

INSERT INTO `category` (`id_kat`, `parent`, `naziv_kat`) VALUES
(1, 0, 'prva'),
(2, 0, 'druga'),
(3, 0, 'treca'),
(4, 0, 'cetvrta'),
(5, 0, 'peta');


CREATE TABLE IF NOT EXISTS `products` (
  `id_pro` int(11) NOT NULL AUTO_INCREMENT,
  `sifra_pro` varchar(25) DEFAULT NULL,
  `id_kat` int(10) DEFAULT NULL,
  `naziv_pro` varchar(60) DEFAULT NULL,
  `opis_pro` varchar(255) DEFAULT NULL,
  `slika_v` varchar(255) DEFAULT NULL,
  `slika_m` varchar(255) DEFAULT NULL,
  `id_sub` int(10) DEFAULT NULL,
  PRIMARY KEY (`id_pro`),
  KEY `id_sub` (`id_sub`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6;

--
-- Dumping data for table `products`
--

INSERT INTO `products` (`id_pro`, `sifra_pro`, `id_kat`, `naziv_pro`, `opis_pro`, `slika_v`, `slika_m`, `id_sub`) VALUES
(1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 1),
(2, '038001', 2, 'proizvod 2', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_2.jpg', 'uploads/small/slika_2.jpg', 2),
(3, '038002', 3, 'proizvod 3', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_3.jpg', 'uploads/small/slika_3.jpg', 6),
(4, '038003', 3, 'proizvod 4', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_4.jpg', 'uploads/small/slika_4.jpg', 3),
(5, '038004', 6, 'proizvod 5', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_5.jpg', 'uploads/small/slika_5.jpg', 7);

CREATE TABLE IF NOT EXISTS `subcategory` (
  `id_sub_kat` int(11) NOT NULL AUTO_INCREMENT,
  `id_kat_parent` int(10) DEFAULT '0',
  `naziv_sub_kat` varchar(60) DEFAULT NULL,
  `slika_kat_v` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id_sub_kat`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;

--
-- Dumping data for table `subcategory`
--

INSERT INTO `subcategory` (`id_sub_kat`, `id_kat_parent`, `naziv_sub_kat`, `slika_kat_v`) VALUES
(1, 1, 'Subkategorija - 1', NULL),
(2, 1, 'Subkategorija - 2', NULL),
(3, 2, 'Subkategorija - 3', NULL),
(4, 2, 'Subkategorija - 4', NULL),
(5, 3, 'Subkategorija - 5', NULL),
(6, 3, 'Subkategorija - 6', NULL),
(7, 4, 'Subkategorija - 7', NULL),
(8, 5, 'Subkategorija - 8', NULL);




Uglavnom hoću da kao ispis imam tipični sadržaj proizvoda (opis, naziv itd), glavnu kategoriju i subkategoriju koliko postoji:


Code:

$result=mysql_query("SELECT * FROM products JOIN category ON products.id_kat = category.id_kat LEFT JOIN subcategory ON category.id_kat=subcategory.id_kat_parent WHERE category.id_kat=3 ORDER BY sifra_pro ASC  LIMIT $poc, $broj_po_str;");

...

?php echo $row['sifra_pro']?>



Iz gore navedenog sql+php upita dobijem sve potrebne podatke no problem nastane što mi se vrati "višestruki" rezultat tj. vrati mi sve subkategorije za neki proizvod premda u bazi fizički piše da npr Proizvod 1 ima samo subkategoriju 1 (Subkategorija - 1).

Znači trebalo bi biti:


1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 1

a vraća mi

1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 1
1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 2
1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 3
1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 4
1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 5
1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 6
1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 7
1, '038000', 1, 'proizvod 1', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 8


Nadam se da je sada jasnije.
 
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: Nepravilno ispisivanje iz baze02.10.2012. u 04:29 - pre 140 meseci
nisam siguran dal si ovo hteo ali evo:

Code:

mysql> CREATE TABLE IF NOT EXISTS `category` (
    ->   `id_kat` int(11) NOT NULL AUTO_INCREMENT,
    ->   `parent` int(10) DEFAULT '0',
    ->   `naziv_kat` varchar(60) DEFAULT NULL,
    ->   PRIMARY KEY (`id_kat`)
    -> ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6;
Query OK, 0 rows affected (0.07 sec)

mysql> 
mysql> --
mysql> -- Dumping data for table `category`
mysql> --
mysql> 
mysql> INSERT INTO `category` (`id_kat`, `parent`, `naziv_kat`) VALUES
    -> (1, 0, 'prva'),
    -> (2, 0, 'druga'),
    -> (3, 0, 'treca'),
    -> (4, 0, 'cetvrta'),
    -> (5, 0, 'peta');
Query OK, 5 rows affected (0.04 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> 
mysql> CREATE TABLE IF NOT EXISTS `subcategory` (
    ->   `id_sub_kat` int(11) NOT NULL AUTO_INCREMENT,
    ->   `id_kat_parent` int(10) DEFAULT '0',
    ->   `naziv_sub_kat` varchar(60) DEFAULT NULL,
    ->   `slika_kat_v` varchar(255) DEFAULT NULL,
    ->   PRIMARY KEY (`id_sub_kat`)
    -> ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
Query OK, 0 rows affected (0.06 sec)

mysql> 
mysql> --
mysql> -- Dumping data for table `subcategory`
mysql> --
mysql> 
mysql> INSERT INTO `subcategory` (`id_sub_kat`, `id_kat_parent`, `naziv_sub_kat`, `slika_kat_v`) VALUES
    -> (1, 1, 'Subkategorija - 1', NULL),
    -> (2, 1, 'Subkategorija - 2', NULL),
    -> (3, 2, 'Subkategorija - 3', NULL),
    -> (4, 2, 'Subkategorija - 4', NULL),
    -> (5, 3, 'Subkategorija - 5', NULL),
    -> (6, 3, 'Subkategorija - 6', NULL),
    -> (7, 4, 'Subkategorija - 7', NULL),
    -> (8, 5, 'Subkategorija - 8', NULL);
Query OK, 8 rows affected (0.03 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> CREATE TABLE IF NOT EXISTS `products` (
    ->   `id_pro` int(11) NOT NULL AUTO_INCREMENT,
    ->   `sifra_pro` varchar(25) DEFAULT NULL,
    ->   `id_kat` int(10) DEFAULT NULL,
    ->   `naziv_pro` varchar(60) DEFAULT NULL,
    ->   `opis_pro` varchar(255) DEFAULT NULL,
    ->   `slika_v` varchar(255) DEFAULT NULL,
    ->   `slika_m` varchar(255) DEFAULT NULL,
    ->   `id_sub` int(10) DEFAULT NULL,
    ->   PRIMARY KEY (`id_pro`),
    ->   KEY `id_sub` (`id_sub`)
    -> ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.07 sec)

mysql> INSERT INTO `products` (`id_pro`, `sifra_pro`, `id_kat`, `naziv_pro`, `opis_pro`, `slika_v`, `slika_m`, `id_sub`) VALUES
    -> (1, '038000', 1, 'proizvod 1', 'opis1', 'uploads/slika_1.jpg', 'uploads/small/slika_1.jpg', 1),
    -> (2, '038001', 2, 'proizvod 2', 'opis2', 'uploads/slika_2.jpg', 'uploads/small/slika_2.jpg', 2),
    -> (3, '038002', 3, 'proizvod 3', 'opis3', 'uploads/slika_3.jpg', 'uploads/small/slika_3.jpg', 6),
    -> (4, '038003', 3, 'proizvod 4', 'opis4', 'uploads/slika_4.jpg', 'uploads/small/slika_4.jpg', 3),
    -> (5, '038004', 6, 'proizvod 5', 'opis5', 'uploads/slika_5.jpg', 'uploads/small/slika_5.jpg', 7);
Query OK, 5 rows affected (0.02 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from products;
+--------+-----------+--------+------------+----------+---------------------+---------------------------+--------+
| id_pro | sifra_pro | id_kat | naziv_pro  | opis_pro | slika_v             | slika_m                   | id_sub |
+--------+-----------+--------+------------+----------+---------------------+---------------------------+--------+
|      1 | 038000    |      1 | proizvod 1 | opis1    | uploads/slika_1.jpg | uploads/small/slika_1.jpg |      1 |
|      2 | 038001    |      2 | proizvod 2 | opis2    | uploads/slika_2.jpg | uploads/small/slika_2.jpg |      2 |
|      3 | 038002    |      3 | proizvod 3 | opis3    | uploads/slika_3.jpg | uploads/small/slika_3.jpg |      6 |
|      4 | 038003    |      3 | proizvod 4 | opis4    | uploads/slika_4.jpg | uploads/small/slika_4.jpg |      3 |
|      5 | 038004    |      6 | proizvod 5 | opis5    | uploads/slika_5.jpg | uploads/small/slika_5.jpg |      7 |
+--------+-----------+--------+------------+----------+---------------------+---------------------------+--------+
5 rows in set (0.00 sec)

mysql> select * from id_kat;
ERROR 1146 (42S02): Table 'test.id_kat' doesn't exist
mysql> select * from category
    -> ;
+--------+--------+-----------+
| id_kat | parent | naziv_kat |
+--------+--------+-----------+
|      1 |      0 | prva      |
|      2 |      0 | druga     |
|      3 |      0 | treca     |
|      4 |      0 | cetvrta   |
|      5 |      0 | peta      |
+--------+--------+-----------+
5 rows in set (0.00 sec)


skratio sam ti opise da ne bi bili previse siroki rezulatti :), a evo su ti upiti:
Code:

mysql> select id_pro, sifra_pro, category.naziv_kat, naziv_pro, opis_pro, slika_v, slika_m, subcategory.naziv_sub_kat from products join category using (id_kat) join subcategory on subcategory.id_sub_kat = products.id_sub;
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
| id_pro | sifra_pro | naziv_kat | naziv_pro  | opis_pro | slika_v             | slika_m                   | naziv_sub_kat     |
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
|      1 | 038000    | prva      | proizvod 1 | opis1    | uploads/slika_1.jpg | uploads/small/slika_1.jpg | Subkategorija - 1 |
|      2 | 038001    | druga     | proizvod 2 | opis2    | uploads/slika_2.jpg | uploads/small/slika_2.jpg | Subkategorija - 2 |
|      3 | 038002    | treca     | proizvod 3 | opis3    | uploads/slika_3.jpg | uploads/small/slika_3.jpg | Subkategorija - 6 |
|      4 | 038003    | treca     | proizvod 4 | opis4    | uploads/slika_4.jpg | uploads/small/slika_4.jpg | Subkategorija - 3 |
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
4 rows in set (0.00 sec)

mysql> -- ako hoces za kategoriju 3
mysql> 
mysql> 
mysql> select id_pro, sifra_pro, category.naziv_kat, naziv_pro, opis_pro, slika_v, slika_m, subcategory.naziv_sub_kat from products join category using (id_kat) join subcategory on subcategory.id_sub_kat = products.id_sub WHERE category.id_kat=3 ORDER BY sifra_pro ASC;
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
| id_pro | sifra_pro | naziv_kat | naziv_pro  | opis_pro | slika_v             | slika_m                   | naziv_sub_kat     |
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
|      3 | 038002    | treca     | proizvod 3 | opis3    | uploads/slika_3.jpg | uploads/small/slika_3.jpg | Subkategorija - 6 |
|      4 | 038003    | treca     | proizvod 4 | opis4    | uploads/slika_4.jpg | uploads/small/slika_4.jpg | Subkategorija - 3 |
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
2 rows in set (0.00 sec)

mysql> -- proizvod 3 i 4 su ti u kategoriji 3, ako hoces proizvod 1 onda moras da zadas drugu kategoriju (1)
mysql> 
mysql> 
mysql> select id_pro, sifra_pro, category.naziv_kat, naziv_pro, opis_pro, slika_v, slika_m, subcategory.naziv_sub_kat from products join category using (id_kat) join subcategory on subcategory.id_sub_kat = products.id_sub WHERE category.id_kat=1 ORDER BY sifra_pro ASC;
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
| id_pro | sifra_pro | naziv_kat | naziv_pro  | opis_pro | slika_v             | slika_m                   | naziv_sub_kat     |
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
|      1 | 038000    | prva      | proizvod 1 | opis1    | uploads/slika_1.jpg | uploads/small/slika_1.jpg | Subkategorija - 1 |
+--------+-----------+-----------+------------+----------+---------------------+---------------------------+-------------------+
1 row in set (0.00 sec)


to si hteo?
 
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: Nepravilno ispisivanje iz baze02.10.2012. u 04:33 - pre 140 meseci
inace malo ti je model cudan, subkategorija treba da ima parent kategoriju koliko vidim to kod tebe ne postoji, kategorije su u stablu dok subkategorija ima id_kat_parent koji je 0? realno je da subkategorija ima id_kat_parent koji je not_null (cega je subkategorija) a da u product pises samo subcat posto se odatle cat podrazumeva, napravis da imas "default" sub_cat i "ostale" tako da nemas varijantu "subcat ako postoji" posto uvek postoji a samu kategoriju nemas u product-u .. e sad zavisno od potreba za podacima (tipovima upita) mozes da ostavis kategoriju u produktu zbog brzeg upita ... u svakom slucaju to je sve neka druga tema, bice da ti ovaj upit vraca to sto si hteo
 
Odgovor na temu

weleb

Član broj: 284399
Poruke: 38
*.adsl.net.t-com.hr.



Profil

icon Re: Nepravilno ispisivanje iz baze02.10.2012. u 06:46 - pre 140 meseci
To je ok sada kada proizvod ima subkategoriju ali ne ispisuje mi one proizvode koji nemaju subkategoriju (subkategorija NULL) a npr dio su glavne kategorije 3....znači ispisuje samo one proizvode glavne kategorije 3 koji posjeduju subkategorije ostal ne

[Ovu poruku je menjao weleb dana 02.10.2012. u 07:57 GMT+1]
 
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: Nepravilno ispisivanje iz baze02.10.2012. u 07:27 - pre 140 meseci
vidis, zato sam ti napisao "i napunis te tabele nekom datom" .. sto nisi stavio u neki insert i neki slog gde je subkategorija null :D

a to sto nemas id=6 za kategoriju u tabeli sa kategorijama je "bug" a ne "feature" (zato se ne prikazuje idpro=5
 
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: Nepravilno ispisivanje iz baze02.10.2012. u 07:43 - pre 140 meseci
dodamo na ono jos dva proizvoda koji imaju NULL subkategoriju

Code:

mysql> INSERT INTO `products` (`id_pro`, `sifra_pro`, `id_kat`, `naziv_pro`, `opis_pro`, `slika_v`, `slika_m`, `id_sub`) 
    -> VALUES
    -> (10, '038010', 10, 'proizvod 10', 'opis10', 'uploads/slika_10.jpg', 'uploads/small/slika_10.jpg', NULL);
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO `products` (`id_pro`, `sifra_pro`, `id_kat`, `naziv_pro`, `opis_pro`, `slika_v`, `slika_m`, `id_sub`) 
    -> VALUES 
    -> (11, '038011', 11, 'proizvod 11', 'opis11', 'uploads/slika_11.jpg', 'uploads/small/slika_11.jpg', NULL);
Query OK, 1 row affected (0.02 sec)

mysql> select * from products
    -> ;
+--------+-----------+--------+-------------+----------+----------------------+----------------------------+--------+
| id_pro | sifra_pro | id_kat | naziv_pro   | opis_pro | slika_v              | slika_m                    | id_sub |
+--------+-----------+--------+-------------+----------+----------------------+----------------------------+--------+
|      1 | 038000    |      1 | proizvod 1  | opis1    | uploads/slika_1.jpg  | uploads/small/slika_1.jpg  |      1 |
|      2 | 038001    |      2 | proizvod 2  | opis2    | uploads/slika_2.jpg  | uploads/small/slika_2.jpg  |      2 |
|      3 | 038002    |      3 | proizvod 3  | opis3    | uploads/slika_3.jpg  | uploads/small/slika_3.jpg  |      6 |
|      4 | 038003    |      3 | proizvod 4  | opis4    | uploads/slika_4.jpg  | uploads/small/slika_4.jpg  |      3 |
|      5 | 038004    |      6 | proizvod 5  | opis5    | uploads/slika_5.jpg  | uploads/small/slika_5.jpg  |      7 |
|     10 | 038010    |     10 | proizvod 10 | opis10   | uploads/slika_10.jpg | uploads/small/slika_10.jpg |   NULL |
|     11 | 038011    |     11 | proizvod 11 | opis11   | uploads/slika_11.jpg | uploads/small/slika_11.jpg |   NULL |
+--------+-----------+--------+-------------+----------+----------------------+----------------------------+--------+
7 rows in set (0.00 sec)


i evo ga upit koji si hteo (valjda)

Code:

mysql> select id_pro, sifra_pro, category.naziv_kat, naziv_pro, opis_pro, slika_v, slika_m, subcategory.naziv_sub_kat
    -> from products
    -> left outer join category using (id_kat)
    -> left outer join subcategory on subcategory.id_sub_kat = products.id_sub
    -> order by id_pro;
+--------+-----------+-----------+-------------+----------+----------------------+----------------------------+-------------------+
| id_pro | sifra_pro | naziv_kat | naziv_pro   | opis_pro | slika_v              | slika_m                    | naziv_sub_kat     |
+--------+-----------+-----------+-------------+----------+----------------------+----------------------------+-------------------+
|      1 | 038000    | prva      | proizvod 1  | opis1    | uploads/slika_1.jpg  | uploads/small/slika_1.jpg  | Subkategorija - 1 |
|      2 | 038001    | druga     | proizvod 2  | opis2    | uploads/slika_2.jpg  | uploads/small/slika_2.jpg  | Subkategorija - 2 |
|      3 | 038002    | treca     | proizvod 3  | opis3    | uploads/slika_3.jpg  | uploads/small/slika_3.jpg  | Subkategorija - 6 |
|      4 | 038003    | treca     | proizvod 4  | opis4    | uploads/slika_4.jpg  | uploads/small/slika_4.jpg  | Subkategorija - 3 |
|      5 | 038004    | NULL      | proizvod 5  | opis5    | uploads/slika_5.jpg  | uploads/small/slika_5.jpg  | Subkategorija - 7 |
|     10 | 038010    | NULL      | proizvod 10 | opis10   | uploads/slika_10.jpg | uploads/small/slika_10.jpg | NULL              |
|     11 | 038011    | NULL      | proizvod 11 | opis11   | uploads/slika_11.jpg | uploads/small/slika_11.jpg | NULL              |
+--------+-----------+-----------+-------------+----------+----------------------+----------------------------+-------------------+
7 rows in set (0.00 sec)

mysql> 


si to hteo ?
 
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: Nepravilno ispisivanje iz baze02.10.2012. u 07:49 - pre 140 meseci
ili ako ne umes da hendlujes null u aplikaciji

Code:
mysql> select id_pro, sifra_pro, coalesce(category.naziv_kat, 'nepostojeca kategorija') cat, naziv_pro, opis_pro, slika_v, slika_m, coalesce(subcategory.naziv_sub_kat, 'nepostojeca subkategorija') subcat
    -> from products
    -> left outer join category using (id_kat)
    -> left outer join subcategory on subcategory.id_sub_kat = products.id_sub
    -> order by id_pro;
+--------+-----------+------------------------+-------------+----------+----------------------+----------------------------+---------------------------+
| id_pro | sifra_pro | cat                    | naziv_pro   | opis_pro | slika_v              | slika_m                    | subcat                    |
+--------+-----------+------------------------+-------------+----------+----------------------+----------------------------+---------------------------+
|      1 | 038000    | prva                   | proizvod 1  | opis1    | uploads/slika_1.jpg  | uploads/small/slika_1.jpg  | Subkategorija - 1         |
|      2 | 038001    | druga                  | proizvod 2  | opis2    | uploads/slika_2.jpg  | uploads/small/slika_2.jpg  | Subkategorija - 2         |
|      3 | 038002    | treca                  | proizvod 3  | opis3    | uploads/slika_3.jpg  | uploads/small/slika_3.jpg  | Subkategorija - 6         |
|      4 | 038003    | treca                  | proizvod 4  | opis4    | uploads/slika_4.jpg  | uploads/small/slika_4.jpg  | Subkategorija - 3         |
|      5 | 038004    | nepostojeca kategorija | proizvod 5  | opis5    | uploads/slika_5.jpg  | uploads/small/slika_5.jpg  | Subkategorija - 7         |
|     10 | 038010    | nepostojeca kategorija | proizvod 10 | opis10   | uploads/slika_10.jpg | uploads/small/slika_10.jpg | nepostojeca subkategorija |
|     11 | 038011    | nepostojeca kategorija | proizvod 11 | opis11   | uploads/slika_11.jpg | uploads/small/slika_11.jpg | nepostojeca subkategorija |
+--------+-----------+------------------------+-------------+----------+----------------------+----------------------------+---------------------------+
7 rows in set (0.00 sec)

mysql> 


 
Odgovor na temu

weleb

Član broj: 284399
Poruke: 38
*.adsl.net.t-com.hr.



Profil

icon Re: Nepravilno ispisivanje iz baze02.10.2012. u 08:11 - pre 140 meseci
Hvala strai, spasio si me :)
 
Odgovor na temu

weleb

Član broj: 284399
Poruke: 38
*.adsl.net.t-com.hr.



Profil

icon Re: Nepravilno ispisivanje iz baze02.10.2012. u 08:17 - pre 140 meseci
Sada ispis šljaka kako treba no ne i upis ukoliko ne odaberem subkategoriju - čitaj strani ključ

Invalid query: Cannot add or update a child row: a foreign key constraint fails (`baza`.`products`, CONSTRAINT `products_ibfk_1` FOREIGN KEY (`id_sub`) REFERENCES `subcategory` (`id_sub_kat`))

Pokušao sam to izbjeći ovim ali ne radi:

Code:

        if(!isset($_POST['subkategorija_p'])) {
            $subkategory = "NULL";
        }
        else {
        $subkategory=$_POST['subkategorija_p'];
        }
 
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: Nepravilno ispisivanje iz baze02.10.2012. u 08:42 - pre 140 meseci
nisi postavio tabele sa constraintima tako da ne znam sta si pogresio ali 99% je varijanta da moras da prvo uneses vrednosti u male tabele pa tek onda u products
 
Odgovor na temu

weleb

Član broj: 284399
Poruke: 38
*.adsl.net.t-com.hr.



Profil

icon Re: Nepravilno ispisivanje iz baze02.10.2012. u 09:01 - pre 140 meseci
products:
Action Keyname Type Unique Packed Column Cardinality Collation Null Comment
Edit Edit Drop Drop PRIMARY BTREE Yes No id_pro 557 A
Edit Edit Drop Drop id_sub BTREE No No id_sub 6 A YES

cetegory
Action Keyname Type Unique Packed Column Cardinality Collation Null Comment
Edit Edit Drop Drop PRIMARY BTREE Yes No id_kat 14 A

Subcategory
Action Keyname Type Unique Packed Column Cardinality Collation Null Comment
Edit Edit Drop Drop PRIMARY BTREE Yes No id_sub_kat 30 A
 
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: Nepravilno ispisivanje iz baze02.10.2012. u 10:18 - pre 140 meseci
bas volis da stedis na karakterima :D ... das lepo ceo show create table tx \G i ne mislis i onda ko god ti pomaze uradi copy/paste :D .. ovako mora se pali mozak :D
 
Odgovor na temu

[es] :: MySQL :: Nepravilno ispisivanje iz baze

[ Pregleda: 1934 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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