Помогите с Sql-запросом для Sphinx`a
Помогите с Sql-запросом для Sphinx`a
Всем доброго времени суток... не могу разобраться со Сфинксом, помогите кто может...
Вопрос в следующем, есть 2 базы, table1(id,name,brand,art) и table2(id,brand,art,brand_r,art_r)...
Нужно выбрать art из table1, и паралелльно выбрать те же art из table2, и вернуть art_r WHERE art=table1.art из табле2... не знаю как сделать, заранее спасибо!
Вопрос в следующем, есть 2 базы, table1(id,name,brand,art) и table2(id,brand,art,brand_r,art_r)...
Нужно выбрать art из table1, и паралелльно выбрать те же art из table2, и вернуть art_r WHERE art=table1.art из табле2... не знаю как сделать, заранее спасибо!
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: Помогите с Sql-запросом для Sphinx`a
Используйте join, на сколько я помню, sphinx ограничено поддерживает join ы
Re: Помогите с Sql-запросом для Sphinx`a
Да, я попробовал, с JOIN, и без JOIN пробовал... только как-то сложные запросы он не понимает, повисает на Индексации...((( Но спасибо!)))
- Stamm
- Сообщения: 407
- Зарегистрирован: 2010.03.14, 18:59
- Откуда: Россия, Москва
- Контактная информация:
Re: Помогите с Sql-запросом для Sphinx`a
Что значит повисает? Сфинксу пофиг на запросы: с JOIN и без он отлично работает
А так, выкладывайте конфиг, чтобы было проще понять, где ошибка.
А так, выкладывайте конфиг, чтобы было проще понять, где ошибка.
Re: Помогите с Sql-запросом для Sphinx`a
Код: Выделить всё
sql_query = SELECT a.id,a.art,a.brand,a.name,b.CatNumber AS Aart,b.RCatNumber AS Bart \
FROM (SELECT t.id,t.art,t.brand,t.name FROM MgnProducts AS t WHERE t.id>='$start' AND t.id<='$end')a, \
MgnCrosses AS b WHERE a.art = b.CatNumber
А еще вопрос оффтоп, есть ли вариант выбирать не по ID, ну или в массиве attrs переносить...???
Заранее спасибо...
- Stamm
- Сообщения: 407
- Зарегистрирован: 2010.03.14, 18:59
- Откуда: Россия, Москва
- Контактная информация:
Re: Помогите с Sql-запросом для Sphinx`a
Что за странные запросы
Какое значение у sql_range_step?
Код: Выделить всё
SELECT a.id,a.art,a.brand,a.name, b.CatNumber AS Aart, b.RCatNumber AS Bart \
FROM MgnProducts AS a \
JOIN MgnCrosses AS b ON a.art = b.CatNumber \
WHERE \
t.id>='$start' AND t.id<='$end' ;
Re: Помогите с Sql-запросом для Sphinx`a
5000, сейчас, но ставил и 500 и 25000 одинаково)
Re: Помогите с Sql-запросом для Sphinx`a
В общем почему-то не получается...
Ситуация следующая, есть 2 БД, в одной хранятся артикулы, во второй артикулы и замены, как при запросе по артикулу получить замену?
тупо пишет Indexing index ... и никаких движений... подскажите как поправить.. Заранее спасибо...
Ситуация следующая, есть 2 БД, в одной хранятся артикулы, во второй артикулы и замены, как при запросе по артикулу получить замену?
Код: Выделить всё
sql_query = /
SELECT r.replace as analog FROM `analogs` AS r JOIN `products` AS p ON(p.art=r.art) WHERE r.id>='$start' AND r.id<='$end'
Последний раз редактировалось lilicbush 2011.08.31, 13:21, всего редактировалось 1 раз.
Re: Помогите с Sql-запросом для Sphinx`a
поправил... без изменений...Stamm писал(а):Знаки больше и меньше должны быть, не равно!
Re: Помогите с Sql-запросом для Sphinx`a
Код: Выделить всё
source main
{
type = mysql
sql_host = ********
sql_user = ********
sql_pass = ********
sql_db = ********
sql_port = 3306
sql_sock = /var/run/mysqld/mysqld.sock
mysql_connect_flags = 32 # 32- включение сжатие при обмене данными с БД
sql_query_pre = SET NAMES utf8
sql_query_pre = SET SESSION query_cache_type=OFF
}
source test : main
{
sql_query = SELECT p.id, p.art, p.name, p.tbrand, r.brand, r.brand_r, r.art , r.art_r \
FROM `crosses` AS r \
JOIN `products` AS p ON ( p.art = r.art ) \
WHERE r.id >= '$start' AND r.id<='$end'
sql_query_range = SELECT MIN(id),MAX(id) FROM crosses
sql_range_step = 500
sql_query_info = SELECT p.name,p.art,c.art,c.art_r FROM crosses AS c,products AS p WHERE c.art='$id'
}
index test
{
source = test
path = /var/www/indexes/crosses/
docinfo = extern
mlock = 0
#morphology = stem_enru
min_word_len = 1
min_prefix_len=1
charset_type = utf-8
html_strip = 1
enable_star = 0
}
indexer
{
mem_limit = 512M
}
searchd
{
listen = 127.0.0.1:3312
#port = 3312
query_log = /var/log/sphinx/query.log
log = /var/log/sphinx/searchd.log
pid_file = /var/log/sphinx/searchd.pid
read_timeout = 5
compat_sphinxql_magics = 0
max_children = 30
max_matches = 20
dist_threads = 2
}
Идея в том чтобы по арту в прайсе найти в кроссах замены этому арту и вернуть ид замен в прайсе...
Re: Помогите с Sql-запросом для Sphinx`a
Stamm писал(а):Можете ещё дамп базы прислать? +)
- Stamm
- Сообщения: 407
- Зарегистрирован: 2010.03.14, 18:59
- Откуда: Россия, Москва
- Контактная информация:
Re: Помогите с Sql-запросом для Sphinx`a
Проблема похоже нашлась: в таблице crosses поле id имеет значения от 252020 до 19269541. Причем количество строк в crosses 12.
Соотвественно, сфинкс пробегался циклом с шагом 500 между крайними значениями. Это просто долго выполняется.
Соотвественно, сфинкс пробегался циклом с шагом 500 между крайними значениями. Это просто долго выполняется.
Re: Помогите с Sql-запросом для Sphinx`a
А как поставить точное соответствие!? И вообще варик с собой не только ID тягать!?Stamm писал(а):Проблема похоже нашлась: в таблице crosses поле id имеет значения от 252020 до 19269541. Причем количество строк в crosses 12.
Соотвественно, сфинкс пробегался циклом с шагом 500 между крайними значениями. Это просто долго выполняется.