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

upit za search formu

[es] :: MySQL :: upit za search formu

[ Pregleda: 3070 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Pavleg

Član broj: 112866
Poruke: 78
*.teol.net.



Profil

icon upit za search formu31.08.2007. u 14:50 - pre 202 meseci
Kako bi trebao da izgleda ovaj upit:

Code:

SELECT apartmani.ime_apartm, apartmani.glavni_opis,apartmani.lokacija, opisi.dodatni_opisi
FROM apartmani LEFT JOIN opisi
ON apartmani.id_apartm=opisi.id_apartm WHERE 
apartmani.ime_apartm LIKE '%$pretr%' OR apartmani.glavni_opis LIKE '%$pretr%'
OR apartmani.lokacija LIKE '%$pretr%' OR opisi.dodatni_opisi LIKE '%$pretr%' 
GROUP BY apartmani.ime_apartm


Ovako sam ga ja zamislio i znam da se ne može tako napisati (OR i ne postoji).

U pitanju search forma koja treba da pretraži dvije table (apartmani i opisi) - njihova polja
(apartmani.ime_apartm, apartmani.glavni_opis, apartmani.lokacija,
opisi.dodatni_opisi) da li sadži reč koja je unesena za pretragu ($pretr).
Odgovor na pretragu ne bi trebao da ima duplikate,
odnosno, samo jedan apartman da se izlista od mogućih više razultata za isti apartma.


Te dve tabele izgledaju ovako:

Code:

CREATE TABLE apartmani (
id_apartm INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
ime_apartm VARCHAR(25) NOT NULL,  
glavni_opis TEXT  NOT NULL, 
glavna_slika VARCHAR(50) NOT NULL, 
kategorija VARCHAR(25) NOT NULL,
lokacija VARCHAR(50) NOT NULL,
br_kreveta TINYINT  NOT NULL,  
cena REAL  NOT NULL,
id_kategor  INT NOT NULL,
UNIQUE (ime_apartm),
INDEX (id_kategor),
FOREIGN KEY (id_kategor) REFERENCES tip_apartmana(id_kategor)
)TYPE = INNODB;


CREATE TABLE opisi (
id_opisi INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
dodatni_opisi TEXT  NOT NULL,
dodatne_slike VARCHAR(50)  NOT NULL, 
id_apartm  INT NOT NULL,
INDEX (id_apartm),
FOREIGN KEY (id_apartm) REFERENCES apartmani(id_apartm)
) TYPE = INNODB;
 
Odgovor na temu

dragancesu
subotica

Član broj: 38340
Poruke: 2189
*.eunet.yu.



+73 Profil

icon Re: upit za search formu01.09.2007. u 13:39 - pre 202 meseci
Mozda moze i ovako ali ako pitas da li je dobro ja bih rekao NIJE.

Stvarno treba sanjati sta da se upise i dobije neki rezultat. Pretpostavljam da ti je za web prezentaciju pa pogledaj neki sajt auto placeva i njihovu pretragu. Lepo se pripremi neka lista vrednosti koja se moze a i ne mora koristiti za pomoc u pretrazi.

Ovako bi inace napravio upit "na jednu rec", ako u pit navedes dve reci rezultat ce biti nista.

[Ovu poruku je menjao dragancesu dana 02.09.2007. u 16:46 GMT+1]
Pomozite Micro$oftu u borbi protiv piraterije, poklonite prijatelju Linux
 
Odgovor na temu

duchess
Ivana Petrovic
In the middle of nowhere.

Član broj: 142670
Poruke: 132
*.bvcom.net.

Sajt: ivona.stens-turs.com


Profil

icon Re: upit za search formu15.10.2008. u 12:48 - pre 188 meseci
kako ne bih otvarala novu temu, jer je slican problem, pisem ovako... :)

hocu da napravim search tj select upit nad 3 tabele. Ono sto sam uradila izgleda ovako:

Code:

SELECT product.product_id, vendor.vendor_id, manufacturer.manufacturer_id FROM product, vendor, manufacturer WHERE product.product_name LIKE '%$kljucna_rec%' || vendor.vendor_name LIKE '%$kljucna_rec%' || manufacturer.mf_name LIKE '%$kljucna_rec%'


ovaj upit bi trebao da mi nadje $kljucna_rec u okviru te tri tabele i tih polja. Ali, izbaci mi SVE id-ove, kao da taj uslov WHERE nije ni "video".
Jel imao neko iskustva sa komandom LIKE nad vise tabela u okviru jednog select upita?

Hvala unapred.
Listen very carefully, I shall say this only once!
 
Odgovor na temu

Shinhan
PHP programmer
Subotica

Član broj: 12327
Poruke: 372
91.150.127.*

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


+4 Profil

icon Re: upit za search formu16.10.2008. u 07:27 - pre 188 meseci
Citat:
duchess: kako ne bih otvarala novu temu, jer je slican problem, pisem ovako... :)

hocu da napravim search tj select upit nad 3 tabele. Ono sto sam uradila izgleda ovako:

Code:

SELECT product.product_id, vendor.vendor_id, manufacturer.manufacturer_id FROM product, vendor, manufacturer WHERE product.product_name LIKE '%$kljucna_rec%' || vendor.vendor_name LIKE '%$kljucna_rec%' || manufacturer.mf_name LIKE '%$kljucna_rec%'


ovaj upit bi trebao da mi nadje $kljucna_rec u okviru te tri tabele i tih polja. Ali, izbaci mi SVE id-ove, kao da taj uslov WHERE nije ni "video".
Jel imao neko iskustva sa komandom LIKE nad vise tabela u okviru jednog select upita?

Hvala unapred.



Nisi JOIN-ovala tabele.
Moja prva preporuka bi bila da koristiš Sphinx ako hoćeš dobre performanse i kvalitetnu pretragu (kao na primer highlight pretraženih reči unutar teksta) ali to nije baš najjednostavnije za implementiranje (moraš pokrenuti search daemon što znači da ne može da se koristi na shared hosting).

Nadam se da ti je baza normalizovana i da imaš indexe na svim ID poljima i FULLTEXT indexe na poljima koja pretražuješ.
Jednostavniji način je da samo ispraviš upit na jedan od sledeća dva načina:
(Ako ti ovaj SQL ne radi, izlistaj sva polja i indexe (eksportuj strukturu pomoću phpmyadmin).
Code:

SELECT product.product_id, vendor.vendor_id, manufacturer.manufacturer_id 
FROM product
 INNER JOIN vendor ON vendor.vendor_id = product.vendor_id
 INNER JOIN manufacturer ON manufacturer.manufacturer_id = vendor.manufacturer_id
WHERE product.product_name LIKE '%$kljucna_rec%' 
 OR vendor.vendor_name LIKE '%$kljucna_rec%' 
 OR manufacturer.mf_name LIKE '%$kljucna_rec%'


Druga varijanta pomoću MySQL fulltext search:
Code:

SELECT product.product_id, vendor.vendor_id, manufacturer.manufacturer_id 
FROM product
 INNER JOIN vendor ON vendor.vendor_id = product.vendor_id
 INNER JOIN manufacturer ON manufacturer.manufacturer_id = vendor.manufacturer_id
WHERE MATCH (product.product_name, vendor.vendor_name, manufacturer.mf_name)
AGAINST ('%$kljucna_rec%');

"Common sense is not so common." - Voltaire
 
Odgovor na temu

[es] :: MySQL :: upit za search formu

[ Pregleda: 3070 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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