![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Mam taki problem, otóż pobieram z jednej tabeli bazy danych MySQL rekord, który przykładowo wygląda tak:
"11 , 14" Potem pobieram z drugiej tabeli konkretne id np 1 czy 11 I chce sprawdzić czy to konkretne id zawiera się w tym 'grupowym'
No, ale wówczas skrypt 'myśli', że zarówno 1 jak i 11 się zawiera, choć tylko ten drugi jest. Pytanie moje, jak to rozwiązać? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 22.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem masz identyfikatory uzytkownikow w jednym polu w tablicy uprawnienia ? $row[rezultat1]='1,5,43,543,123' ?!
Bez sensu odebrales sobie wszystkie opcje jakie daje Ci baza danych wlasnie do takich zlaczen. Juz chyba lepiej robic 10 wpisow z tym samym userem a innym skryptem nizeli w ten sposob normalizowac baze i nie miec mozliwosci dac joina. Nie wyszukasz w stringu "6" bo jak napisales wywali ci np "16" jako rezultat. Mozesz dodac na poczatek i koniec kazdego ciagu w 'grupowych' indentyfikatorach "," (sam przecinek). Wtedy bedziesz mial 'separator' do swoich wartosci i mozesz prawidlowo przyronac W ten sposob trzeba bedzie wyszukiwac przy pomocy like w polu co nie jest zbyt wydajnei zalecane. if strlen($x)==1 { $y=",".$x.","; select..... where id_costam like '%$y%'; } Ten post edytował calebos 14.08.2008, 13:00:40 |
|
|
-m- |
![]()
Post
#3
|
Goście ![]() |
if strlen($x)==1 { $y=",".$x.","; select..... where id_costam like '%$y%'; } jest inna mozliwość bez dodawania , przed i po zmiennej np. CODE SELECT FIND_IN_SET('4', '1,2,44,444,4') zwróci 5 czyli pozycję ściśle dopasowanejwartości a CODE SELECT FIND_IN_SET('4', '1,2,44,444') zwróci 0. Czyli możnaby napisac 'SELECT FIND_IN_SET($x, nazwa_pola) FROM .......... WHERE ..............' |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 06:52 |