Problem z zapytaniem, LIKE ale z warunkiem |
Problem z zapytaniem, LIKE ale z warunkiem |
11.12.2009, 11:57:19
Post
#1
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.09.2003 Skąd: warszawa Ostrzeżenie: (0%) |
Witam
Mam drobny problem - mam w bazie tabele "wyswietlajnews_wdziale", a w niej rekordy, o konstrkcji - "1,5,7,8,15,19" gdzie cyfry to numery działów. W konkretnym dziale wyswietlane sa newsy poprzez sprawdzenie czy ten news ma sie wyswietlac w tym dziale . Czy da się skonstruować zapytanie poprzez LIKE, czy dopiero po wyjeciu z bazy wyciagnac to w php? Gdyby bylo to zrobione w sposób select * from baza where wyswietlajnews_wdziale LIKE '$iddzialu' , to w dziale powiedzmy 1 wyswietliloby sie rowniez gdyby w danym rekordzie bylyby wartosci np. 15,16 (bo "znalazłby" "1"). Niewiem czy to poprawnie wytłumaczyłem. Szukałem odpowiedzi w necie ale bez rezultau ;/ z gory dzieki za pomoc |
|
|
11.12.2009, 12:00:19
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 468 Pomógł: 6300 Dołączył: 27.12.2004 |
zacznijmy od tego ze masz źle skontruowaną baze.
zamiast pola o wartosci 1,5,7,8,15,19 powienienes miec tabele o strukturze: idNews | idDzialu przykladowe dane dla dzialu o id 1 1 | 1 1 | 5 1 | 7 1 | 8 1 | 15 1 | 19 Wyszukiwanie po takiej strukturze to juz normalne zapytania sql -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
11.12.2009, 12:03:02
Post
#3
|
|
Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%) |
Odradzam taką konstrukcję, jeśli możesz to lepiej zrób osobną tabelę która będzie łączyć dział z newsami, coś w stylu
dzial_newsy id_dzial, id_news Przy pobieraniu danych użyj odpowiedniego joina i będziesz miał to co potrzeba bez używania LIKE które w tym przypadku będzie mało optymalne -------------------- |
|
|
11.12.2009, 12:08:13
Post
#4
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.09.2003 Skąd: warszawa Ostrzeżenie: (0%) |
chyba nie do końca przedstawiłem to jasno.
podczas edytowania - dodawania newsa w CMSie wybiera sie czy ma sie wyswietlic na str glownej, czy w dzialach i czy w jeszcze innym miejscu. jezeli w dzialach to pojawia sie spis dzialow i zaznacza sie dokladnie w ktorych. w bazie w kazdym newsie jest kolumna "wyswietlajnews_wdziale" i tam wpisywane sa id dzialow, przy ktorych ten news ma byc wyswietlany. w konkretnym dziale chcialbym, aby przeanalizowal ta kolumne i sprawdzil czy w danym rekordzie wystepuje dokladnie to id dzialu |
|
|
11.12.2009, 12:14:18
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 468 Pomógł: 6300 Dołączył: 27.12.2004 |
Cytat chyba nie do końca przedstawiłem to jasno. wyraziles sie bardzo jasno. I ja, wydaje mi sie, ze tez bardzo jasno ci napisalem ze masz złą strukture i najlepiej by bylo jakbyś zamienil na tę, co ci zaproponowałem
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
11.12.2009, 12:17:36
Post
#6
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.09.2003 Skąd: warszawa Ostrzeżenie: (0%) |
problem w tym, że klientka nagle zmienila swoja wizje tego co bedzie, w cholere poszla moja praca i teraz nie mam czasu na przekonstuowanie bazy. jest to mozliwie technicznie, czy zmiana konstrukcji to jedyne wyjscie?
|
|
|
11.12.2009, 12:20:27
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 468 Pomógł: 6300 Dołączył: 27.12.2004 |
Mozesz uzyc wyrazenia regularnego (RLIKE) by wyciągnac te id. Przy pomocy wyrazenia bedziesz mogl podac ze id musi sie konczyc przecinkiem lub byc ostatnim id w ciagu
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
11.12.2009, 12:26:20
Post
#8
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
W takim razie najprościej będzie jeśli przed i po każdej liczbie będzie końcowy przecinek, czyli zamiast:
Kod 1,5,7,8,15,19 będziesz miał: Kod ,1,5,7,8,15,19, Wtedy tworząc warunek z LIKE nie dajesz:
tylko:
czyli otaczasz identyfikator działu przecinkami (i zapomniałeś o %). Chyba to będzie najprostsze wyjście w tej sytuacji, aczkolwiek zdecydowanie lepiej byłoby przeprojektować bazę. |
|
|
11.12.2009, 12:29:52
Post
#9
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.09.2003 Skąd: warszawa Ostrzeżenie: (0%) |
myślałem o tym - musi kończyć się przecinkiem, być poprzedzony przecinkiem i być ostatnim lub pierwszym w ciągu. jeżeli pierwszym i ostatnim, to przecinek przed albo po chyba że jest to jedyny element. ciezko to wyglada ;/ ktoś pomoże takie coś skonstruować?
|
|
|
11.12.2009, 12:32:53
Post
#10
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
|
|
|
11.12.2009, 12:37:27
Post
#11
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.09.2003 Skąd: warszawa Ostrzeżenie: (0%) |
@phpion - wiem, wrzucilem odpowiedz nie widzac Twojej wypowiedzi. tak zrobie - jest to wyjscie z tej sytuacji
dziękuję bardzo wszystkim! |
|
|
11.12.2009, 12:38:38
Post
#12
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków |
niemniej ten sposób pod względem optymalizacji jest kompletnym niewypałem, 0 tu jest optymalizacji....
-------------------- |
|
|
11.12.2009, 12:45:12
Post
#13
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.09.2003 Skąd: warszawa Ostrzeżenie: (0%) |
niestety - poprzednio bylo tak, ze newsy byly oddzielne, dla dzialow (kazdy news mial przypisane w ktorym dziale sie wyswietla). nagle klientka zmienila decyzje - a czasu niestety nie, trzeba bylo cos na szybko zrobic.
|
|
|
11.12.2009, 12:46:20
Post
#14
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków |
nie wiem czy to Ci potem popłaci, jak będziesz chciał jakoś grupować te dane to się zajedziesz.
-------------------- |
|
|
11.12.2009, 12:53:28
Post
#15
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.09.2003 Skąd: warszawa Ostrzeżenie: (0%) |
zanim beda wrzucane dane, mam nadzieje ze przeforsuje troche czasu na przebudowanie bazy, zawsze mam niesmak jak jest to zrobione "na szybko", taka fuszerka - dzis jednak musi byc tak jak klient chcial - niestety ;/
|
|
|
11.12.2009, 13:05:09
Post
#16
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków |
ja takie sprawy załatwiam mówiąc klientowi że dodatkowy dzień pozwoli zrobić coś lepszego.
-------------------- |
|
|
11.12.2009, 13:31:49
Post
#17
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.09.2003 Skąd: warszawa Ostrzeżenie: (0%) |
gdyby to takie łatwe było, ale czas 2 dni, a poprawek na tydzień - nie ma możliwości przedłużenia. a klient jest pośrednikiem, wiec gucio go obchodzi, że coś nie będzie idealnie zrobione (kod, optymalizacja) etc.
|
|
|
Wersja Lo-Fi | Aktualny czas: 15.05.2024 - 03:05 |