Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] dokladniejszy wybór SELECT LIKE, jak sprecyzowac pytanie
elmozaur
post 17.02.2010, 12:59:54
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Witam.
Chcialbym prosic o porade w nastepujacej kwestii:
Mam baze zawierajaca newsy. Jedno z pol tabeli newsy okresla jakie galerie zdjec maja byc wyswietlana pod newsem. Pole to wyglada np tak: 10;34;60;100. I tu jest moj problem.

Jesli zadaje pytanie:
  1. SELECT * FROM newsy WHERE galeria LIKE '%10%'


to w wyniku dostane zarowno newsy z galeria 10, 100 jak i 1000. A potrzebuje te ktore maja dokladnie 10
Pytanie: czy pytajac baze poprzez LIKE moge jakos dokladniej okreslic czego szukam ?

za info z gory dziekuje
Grzegorz

Ten post edytował elmozaur 17.02.2010, 13:01:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
muniekw
post 17.02.2010, 13:13:16
Post #2





Grupa: Zarejestrowani
Postów: 243
Pomógł: 22
Dołączył: 1.06.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mi się wydaje, że możesz to zrobić tak:
  1. 1.
  2. SELECT * FROM newsy WHERE galeria AND blelbeble = 10
  3.  
  4. //blebleble TO pole określające TO czego szukasz
Go to the top of the page
+Quote Post
exood
post 17.02.2010, 13:20:31
Post #3





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(elmozaur @ 17.02.2010, 12:59:54 ) *
Pole to wyglada np tak: 10;34;60;100. I tu jest moj problem.


jesli byś miał sredniki przed i po (czyli ";10;34;60;100;") to wystarczyłoby zrobić:

  1. SELECT * FROM tabela WHERE pole LIKE '%;10;%';


Go to the top of the page
+Quote Post
elmozaur
post 17.02.2010, 13:32:41
Post #4





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


jest tak:
- jesli news ma 1 galerie to pole wyglada tak '10'
- jesli news ma galerie jako pierwsza to tak '10;1234;13;23'
- jesli jako ostatni to tak '12;234;2354;10'
- a jesli w srodku to tak '123;12;10;25;15'

jak wiec widac sa cztery mozliwosci dopasowania poszukiwanego wyrazu do wzorca.
moze da sie jakos wyrazeniami regularnymi ?
Go to the top of the page
+Quote Post
exood
post 17.02.2010, 13:37:24
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

Ostrzeżenie: (0%)
-----


możesz jeszcze zmodyfikować pole wynikach dodac mu średniki z przodu i z tyłu

  1. SELECT CONCAT(';',TABELA.POLE_GALERIA,';') AS mod_POLE_GALERIA WHERE mod_POLE_GALERIA LIKE '%;10;%'


czy coś w ten deseń, z tym, ze nie wiem jakie to szybkie będzie.
z tym, że średniki trzebaby jeszcze escape'nąć coby się zapytanie wykonało;)

Ten post edytował exood 17.02.2010, 13:41:26
Go to the top of the page
+Quote Post
phpion
post 17.02.2010, 13:37:26
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Już dostałeś odpowiedź:
Cytat(exood @ 17.02.2010, 13:20:31 ) *
jesli byś miał sredniki przed i po (czyli ";10;34;60;100;") to wystarczyłoby zrobić:

  1. SELECT * FROM tabela WHERE pole LIKE '%;10;%';

Poza tym: masz złą strukturę tabel. Do takich celów stosuje się osobną tabelę, tzw. "pivot".
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:46