DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   LIKE, vise zapisa (http://www.devprotalk.com/showthread.php?t=5125)

Ivan 14. 04. 2008. 21:50

LIKE, vise zapisa
 
Prvo da napomenem da nisam znao kako jasnije da napisem naslov, pa ako neko ima ideju neka zameni, hvala ...

Imam sledeci problem: Postoji tablica sa X zapisa, struktura otprilike izgleda ovako:

|id|title|text|code_name|
-------------------------
1|title1|neki_text1|XDJENOEP|
2|title2|neki_text2|DJE13NJD|
3|title3|neki_text3|PLKAZYW|

I sad, imam drugu tablicu gde se cuvaju delovi polja code_name, npr: E13, ZYW. Te, da kazemo delove polja code_name, vadim jednim kverijem.

Nakon toga mi je potrebno da iz prve tablice izvucem odredjen broj zapisa (neka bude 1) ali tako da code_name bude "LIKE" onaj deo koji sam izvukao iz druge tablice.
Za sada izgleda jednostavno, za svaki deo code_name koji sam izvukao napisem kveri tipa: "SELECT * FROM table1 WHERE code_name LIKE '%E13%' LIMIT 1". Ovo pustim u petlju za svaki zapis i to je to.

Ali problem je cu imati mnogo zapisa i to ce da oduzme previse vremena, zanima me da li postoji nekin nacin da se stavi vise LIKE uslova i da se za svaki izvuce po jedan zapis ... ?

Nadam se da ste razumeli ? I da neko ima ideju kako ovo da resim ... ?

Hvala,
Ivan

kalkulus 14. 04. 2008. 22:06

mozesh ti da stavish vishe uslova u upit

SELECT * FROM table1 WHERE code_name LIKE '%E13%' OR code_name LIKE '%ZYW%' OR code_name LIKE..

Ivan 14. 04. 2008. 22:33

Da, ali to ne znaci da cu da dobijem sigurno jedan zapis koji sadrzi "E13" i jedan zapis koji sadrzi "ZYW". Vec mogu da dobijem dva sa istim delom code_name, zavisno vec od redosleda zapisa u bazi i ostalih uslova.

Nadam se da je sada jasnije sta mi je potrebno ...

LiquidBrain 14. 04. 2008. 22:39

distinct?

Dejan Topalovic 14. 04. 2008. 23:03

Hm, nisam siguran da sam ispravno shvatio sta zelis, ali mozda ti ovo moze pomoci?
Kôd:

select cn.*
from code_names as cn, code_pieces as cp
where instr(cn.code_name, cp.code_piece) > 0
and cp.code_piece = 'E13';


jablan 15. 04. 2008. 00:13

A nešto na foru:
Kôd:

SELECT * FROM delovi d
LEFT JOIN puni p ON p.polje LIKE '%' + d.polje + '%'

?

Ivan 15. 04. 2008. 16:49

Hm nijedno resenje mi ne pomaze, ajd da probam da objasnim ponovo:

Tablica 1:

|id|title|text|code_name|
-------------------------
1|title1|neki_text1|XDJENOEP|
2|title2|neki_text2|DJEN3NJD|
3|title3|neki_text3|PLKAZYW|

Tablica2:

|id|code_pieces1|code_pieces2|
-------------------------
1|XDJ|JEN|
2|JE1|ZYW|

Ono sto prvo uradim je da selektujem iz tablice 2 ove delove koda i pustim to u petlju. Dakle za prvi krug imacemo "XDJ" i "JEN".

Sada mi treba kveri koji ce da izvuce, iz tablice 1, jedan zapis koji u polju code_name ima deo LIKE "XDJ" i jedan zapis koji ima deo LIKE "JEN". Ovo moze lako da se izvede sa dva kverija ali je pitanje kako sa jednim ...

Dakle nesto ovako:
"SELECT * FROM tablica1 WHERE code_name LIKE 'XDJ' OR code_name LIKE 'JEN' LIMIT 2"

I da ovaj kveri vrati:

|id|title|text|code_name|
-------------------------
1|title1|neki_text1|XDJENOEP|
2|title2|neki_text2|DJEN3NJD|

Ovo ce u nekim slucajevima i da vrati ovakav rezultat ali nece uvek, tj nece kada bude bilo vise "slicnih" zapisa. Tada ce da vrati npr dva zapisa LIKE 'XDJ', a distinct ne mogu da radim jer je polje "slicno" a ne isto ...

Jasnije sada ? :)

Hvala ...

kodi 15. 04. 2008. 23:52

Citat:

Originalno napisao Ivan (Napišite 53771)

Jasnije sada ? :)

Hvala ...



edit, sad mislim da razumem, neces da ti dva puta vrati isti row?

misk0 15. 04. 2008. 23:59

A nesto kao

Kôd:

SELECT t1.code_pieces1, t1.code_pieces2, t2.code_name FROM tablica2 as t1
JOIN tablica1 as t2 ON t2.code_name LIKE t1.code_pieces1 OR t2.code_name LIKE t1.code_pieces2

(ovo je iz glave, moguce da ima kakvih syntax gresaka.

jablan 16. 04. 2008. 00:12

U prvoj poruci nisi pomenuo da imaš dve kolone sa delovima koda. Je l' to konačno dve kolone ili n kolona? Zašto ti to nije normalizovano? Koji problem ustvari rešavaš?


Vreme je GMT +2. Trenutno vreme je 17:03.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.