Novo

Forum kao aplikacija na telefonu

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

  • 19 odgovora
  • 3.359 pregleda

Najnovija ↓

Pretraga cele baze, vraca samo deo rezultata 09.10.2012. u 01:23 · pre 171 mesec
izmenjeno 1 put, poslednji put peca89bg 09.10.2012. u 15:09
  1. peca89bg09.10.2012. u 15:09zapis iz teksta poruke
#1
Zdravo svima,

DB dump je u prilogu.

Ovim upitom izvlacim sve iz baze:
Code (sql):

SELECT
    main_section.naziv_fr AS main_section_naziv,
    sub_section_1.naziv_fr AS sub_1_naziv,
    sub_section_2.naziv_fr AS sub_2_naziv,
    sub_section_2.des_fr AS sub_2_des,
    sub_section_2.rich_des_fr AS sub_2_rich,
    sub_section_2.rich AS ima_texta,
    sub_section_2.linked, sub_section_2.url,
    sub_section_2.link_fr AS anchor,
    sub_section_3.text_fr AS sub_3_text
        FROM
            main_section JOIN sub_section_1 ON main_section.id= sub_section_1.id_main
            JOIN sub_section_2 ON sub_section_2.id_sub_1 = sub_section_1.id
            JOIN sub_section_3 ON sub_section_3.id_sub_2 = sub_section_2.id
                WHERE
                    main_section.naziv_fr LIKE '%%' OR
                    sub_section_1.naziv_fr LIKE '%%' OR
                    sub_section_2.naziv_fr LIKE '%%' OR
                    sub_section_2.des_fr LIKE '%%' OR
                    sub_section_2.rich_des_fr LIKE '%%' OR
                    sub_section_2.link_fr LIKE '%%' OR
                    sub_section_3.text_fr LIKE '%%'
 


I to lepo radi ali samo donekle.

Kada trazim 'main_naziv " id je 3 iz tabele main_section, u tabeli sub_section_1 imam dete za ovaj ovaj id a to su 13 i npr 14 i dalje u tabeli sub_section_2 imam redove ciji je parent id 13 i 14 iz tabele sub_section_1. E sada ovde nastaje problem jer mi se vrate svi redovi u kojima kolona naziv_fr nije blank a gde je blank te redove mi preskoci i ako za te redove uredno stoje parent id-s 13 ili 14.

Nije best projektovano ali radi mi posao skroz ok za moju app za ostale stvari ali eto ova pretraga me ubi u pojam.
Ne znam koliko sam dobro objasnio jer me glava uzasno mnogo boli posle bakcanja cele veceri oko ovoga :) :)

Recimo kada mi search term = '' treba da mi vrati sve iz baze ali mi vraza za nekih 15 komada manje a to su upravo oni redovi u kojima mi je naziv_fr ili naziv_en u sub_section_2 prazan.
Mozda je sada jasnije :)
Re: Pretraga cele baze, vraca samo deo rezultata 09.10.2012. u 07:15 · pre 171 mesec #2
sada nikako ne mogu da stignem da pogledam ovaj sql ali osnovno pitanje je da li ti je naziv_fr "prazan" (dakle "") ili ti je naziv_fr NULL ?

NULL like '%%" nije tacno, tu onda moras da uradis nesto tipa ako ti je prazan searchterm da uradis umesto like '%%', is null posto ako imas where like ... tu nikad neces dobiti vrednosti koje su prazan string...

brzo resenje ti je da te kolone stavis da budu not null defauilt '' i onda ce da budu prazne umesto null pa ce like '%%' da radi
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Pretraga cele baze, vraca samo deo rezultata 09.10.2012. u 14:58 · pre 171 mesec #4
Mislio sam da je do sub_section_3 tabele jer i nju joinujem a bas tih 28rows su u njoj.
Sada kada sam je sklonio iz pretrage, opet isto, nikako da uhvati gde je naziv_en ili naziv_fr = '' iz tabele sub_section_2
Re: Pretraga cele baze, vraca samo deo rezultata 09.10.2012. u 15:03 · pre 171 mesec #5
Kada je search term prazan:

Code (sql):

SELECT
    main_section.naziv_fr AS main_section_naziv,
    sub_section_1.naziv_fr AS sub_1_naziv,
    sub_section_2.naziv_fr AS sub_2_naziv,
    sub_section_2.des_fr AS sub_2_des,
    sub_section_2.rich_des_fr AS sub_2_rich,
    sub_section_2.rich AS ima_texta,
    sub_section_2.linked, sub_section_2.url,
    sub_section_2.link_fr AS anchor,
    sub_section_3.text_fr AS sub_3_text
        FROM
            main_section JOIN sub_section_1 ON main_section.id= sub_section_1.id_main
            JOIN sub_section_2 ON sub_section_2.id_sub_1 = sub_section_1.id
            JOIN sub_section_3 ON sub_section_3.id_sub_2 = sub_section_2.id
 


Koliko komplikovano to može biti?
Re: Pretraga cele baze, vraca samo deo rezultata 09.10.2012. u 15:06 · pre 171 mesec #6
Citat:
djoka_l: Kada je search term prazan:

Code (sql):

SELECT
    main_section.naziv_fr AS main_section_naziv,
    sub_section_1.naziv_fr AS sub_1_naziv,
    sub_section_2.naziv_fr AS sub_2_naziv,
    sub_section_2.des_fr AS sub_2_des,
    sub_section_2.rich_des_fr AS sub_2_rich,
    sub_section_2.rich AS ima_texta,
    sub_section_2.linked, sub_section_2.url,
    sub_section_2.link_fr AS anchor,
    sub_section_3.text_fr AS sub_3_text
        FROM
            main_section JOIN sub_section_1 ON main_section.id= sub_section_1.id_main
            JOIN sub_section_2 ON sub_section_2.id_sub_1 = sub_section_1.id
            JOIN sub_section_3 ON sub_section_3.id_sub_2 = sub_section_2.id
 


Koliko komplikovano to može biti?


Dao sam samo example da kada je prazan term da bi trebalo da vrati sve, posto se radi o search-u na site=u nece term uvek biti prazan.
Re: Pretraga cele baze, vraca samo deo rezultata 10.10.2012. u 11:44 · pre 171 mesec #11
cool, i kada pustis ovaj upit:

Code:

SELECT
    main_section.naziv_fr,
    sub_section_1.naziv_fr,
    sub_section_2.naziv_fr
        FROM
            main_section JOIN sub_section_1 ON main_section.id= sub_section_1.id_main
            JOIN sub_section_2 ON sub_section_2.id_sub_1 = sub_section_1.id
            JOIN sub_section_3 ON sub_section_3.id_sub_2 = sub_section_2.id 


sta ti fali od slogova u rezultatu
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Pretraga cele baze, vraca samo deo rezultata 10.10.2012. u 11:49 · pre 171 mesec #12
Nigde mi ne uhvati red gde je rich = 1 iz tabele sub_section_2.
Bitan mi je taj podatak jer ako je 1 onda ispisujem rich_des_en ili rich_des_fr.
treba mi sa where jer pretraga na site-u pa nece da bude uvek emptu term.
Re: Pretraga cele baze, vraca samo deo rezultata 10.10.2012. u 11:54 · pre 171 mesec #13
nebitan je where za pocetak ...

kazes da ti se ovih 7 ne pokazuje ?

mysql> select count(*) from sub_section_2 where rich=1;
+----------+
| count(*) |
+----------+
| 7 |
+----------+
1 row in set (0.00 sec)

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Pretraga cele baze, vraca samo deo rezultata 10.10.2012. u 12:03 · pre 171 mesec #15
stavi zadnji join da bude LEFT


...
LEFT JOIN sub_section_3 ON sub_section_3.id_sub_2 = sub_section_2.id
WHERE
...

i resices problem .. imas problem sto radis jon za sub_section_3.id_sub_2 = sub_section_2.id a

Code:

mysql> select id from sub_section_2;
+----+
| id |
+----+
| 11 |
| 35 |
| 33 |
| 42 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 25 |
| 26 |
| 27 |
| 32 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 49 |
| 50 |
| 54 |
| 43 |
+----+
29 rows in set (0.00 sec)

mysql> select id_sub_2 from sub_section_3;
+----------+
| id_sub_2 |
+----------+
|       12 |
|       13 |
|       14 |
|       15 |
|       16 |
|       17 |
|       18 |
|       19 |
|       20 |
|       21 |
|       22 |
|       25 |
|       26 |
|       27 |
|       36 |
|       37 |
|       38 |
|       39 |
|       40 |
|       41 |
|       50 |
+----------+
21 rows in set (0.00 sec)



dakle poklapa se samo 21:

Code:

mysql> select sub_section_3.id_sub_2, sub_section_2.id from sub_section_3, sub_section_2 where sub_section_3.id_sub_2 = sub_section_2.id;
+----------+----+
| id_sub_2 | id |
+----------+----+
|       12 | 12 |
|       13 | 13 |
|       14 | 14 |
|       15 | 15 |
|       16 | 16 |
|       17 | 17 |
|       18 | 18 |
|       19 | 19 |
|       20 | 20 |
|       21 | 21 |
|       22 | 22 |
|       25 | 25 |
|       26 | 26 |
|       27 | 27 |
|       36 | 36 |
|       37 | 37 |
|       38 | 38 |
|       39 | 39 |
|       40 | 40 |
|       41 | 41 |
|       50 | 50 |
+----------+----+
21 rows in set (0.00 sec)


i to je ono sto ti taj join vrati, ako hoces da imas i tamo gde nemas par, onda moras da radis left

Code:

mysql> select sub_section_2.rich from main_section JOIN sub_section_1 ON main_section.id= sub_section_1.id_main
    ->  JOIN sub_section_2 ON sub_section_2.id_sub_1 = sub_section_1.id
    ->  left JOIN sub_section_3 ON sub_section_3.id_sub_2 = sub_section_2.id;
+------+
| rich |
+------+
|    1 |
|    1 |
|    1 |
|    1 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    1 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    1 |
|    0 |
|    0 |
|    1 |
+------+
29 rows in set (0.00 sec)

mysql> 


ok?
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Pretraga cele baze, vraca samo deo rezultata 10.10.2012. u 12:30 · pre 171 mesec #18
left, right, outer ... ima toga ... treba savladati :D...

ako neko zna za neki dobar tutorijal za jonove sa dobrim primerima neka okaci... ja mislim da me bar jednom nedeljno neko pita za dobar tutorial za join i ja uvek ljude saljem na mysql dokumentaciju ali onaj tamo tutorijal je prilicno bedan :(
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Pretraga cele baze, vraca samo deo rezultata 10.10.2012. u 12:43 · pre 171 mesec #19
Uvek imam left, outer, right u glavi ali jbg, blokada :)


Ja imam negde to po nekim sveskama boga samo boga pitaj gde je :)
Ako uspem da nadjem okacicu scan ovde, mada los mi rukopis :D
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme