kreatiff
7.08.2012, 12:47:44
Witam.
Głowię się nad pewnym zapytaniem do bazy SQLite używając PDO.
Chodzi o to, by z pola koncowka w tabeli koncowki wybrać takie zlepki liter, które są końcówką uprzednio wybranego wyrazu.
I tak dla przykładu:
Dany wyraz: kolor
W tabeli koncowki mamy pole koncowka z takimi rekordami:
olor
lor
or
ar
r
lr
lej
ej
j
Zapytanie ma zwrócić: olor, lor, or, r (czyli końcówki wyrazu kolor).
SELECT koncowka
FROM koncowki
WHERE koncowka [zawiera się w] 'kolor'
Głowię się już kilka dni nad tym przeszukując Internet, ale niestety mój stan wiedzy lub sposób szukania nie wystarcza na rozwiązanie tego problemu.
nospor
7.08.2012, 12:49:56
SELECT koncowka
FROM koncowki
WHERE 'kolor' LIKE concat('%',koncowka)
kreatiff
7.08.2012, 17:34:43
Dziękuję za odpowiedź.
Jednak coś robię cały czas źle. Mimo stworzenia sobie dokładnie takiej samej bazy na potrzeby testów z tymi samymi danymi jak w 1 poście cały czas mam:
Call to a member function fetch() on a non-object... .
Nie wiem co jest grane.
Mój cały testowy kod wygląda tak:
$pdo = new PDO('sqlite:.\test.db');
$query = $pdo->query("SELECT koncowka FROM koncowki WHERE 'kolor' LIKE concat('%',koncowka)");
$tablica = $query->fetchAll();
echo'<pre>';var_dump
($tablica);echo
'</pre>';
nospor
7.08.2012, 17:37:33
Masz błąd bazy/zapytania. Wypdałoby więc ten błąd wyświetlić. Jak nie wiesz jak to zajrzyj do manuala do PDO - tam masz napisane jak sie dobrać do błędu
kreatiff
7.08.2012, 17:44:27
Connection failed: SQLSTATE[HY000]: General error: 1 no such function: concatA czy coś z tym pójdzie zrobić, albo jakoś to obejść?
dodane:
Idzie obejść. Dla potomnych:
SELECT koncowka
FROM koncowki
WHERE 'kolor' LIKE '%'||koncowka
Bardzo dziękuję za pomoc w rozwiązaniu problemu.