Gregorio
11.07.2013, 12:28:28
Witam,
Mam problem z wybraniem danych z tabeli
Dane w tabeli zapisane są w ten sposób : Opcja 1|Opcja 2|Opcja 3|
Próbowałem takie zapytanie select * from tabela where wyposazenie in ('Opcja 1|','|Opcja 2|','Opcja 3|');
Jednak nie zwraca mi danych. Jak zrezygnuje z | wykonujac takie zapytanie select * from tabela where wyposazenie in ('Opcja 1','Opcja 2','Opcja 3');
to łapie tylko pierwszą wartość z zapytania.
Pozdrawiam
nospor
11.07.2013, 12:31:48
znaczy ze w jednym polu tekstowym masz tak zapisane opcje? No to masz totalnie zla strukture.
Opcje maja byc oddzielną tabelą i potem masz je wiazac dodatkową tabela. Struktura
TABELA
ID
....
OPCJE
ID
NAZWA
....
TABELA_OPCJE
ID_TABELA
ID_OPCJA
I wowczas wszystko jest tak jak nalezy i mozna normalnie na tym pracowac.
Jesli zas opcji masz malo to mozesz tez pobawic sie w BITy
http://nospor.pl/opcje-dwuwartosciowe-przechowywanie.html
bpskiba
11.07.2013, 14:32:48
Zdrowy rozsądek podpowiada, że nie należy brnąć w ślepy zaułek i przerobić strukturę zgodnie z sugestiami nospor'a
Odnośnie samego twojego zapytania:
SELECT * FROM tabela WHERE wyposazenie LIKE ('%Opcja 1%') OR wyposazenie LIKE('%Opcja 2%') OR wyposazenie LIKE('%Opcja 3%');
Gregorio
11.07.2013, 15:10:20
bpskiba - dzięki zadziałało, mam jeszcze pytanie w tabeli jest wiele wierszy i np wybrało mi wersje o której pisałem "Opcja 1|Opcja 2|Opcja 3|" ale też wiersze gdzie była np tylko sama Opcja 3 lub Opcja 2.
czy mógłbyś mi pomóc z takim zapytaniem ?
nospor
11.07.2013, 15:11:43
No to zamiast OR masz uzyc AND.... toz to prosta logika jest.
I jesli mozesz to zmien te baze bo daleko na czyms takim nie zajedziesz