Я использую поисковую систему «solr» для запроса индекса объявлений, соответствующих заданным критериям. Результатом является ID: номера объявлений, которые я затем использую, чтобы найти все совпадения в базе данных MySql с этими ID: s.
Возвращенные идентификаторы помещаются в массив.
Как вы можете видеть ниже, массив взорвался.
Затем я использую «IN», чтобы найти все совпадения.
$solr_id_arr_imploded = implode("', '", $solr_id_arr);
$query = "SELECT mt.*, $sql_tbl.* FROM classified mt LEFT JOIN $sql_tbl ON
$sql_tbl.classified_id = mt.classified_id WHERE mt.ad_id IN ('$solr_id_arr_imploded')";
$ sql_tbl - это выбранная пользователем категория, в данном случае допустим, что это «автомобили».
Моя проблема заключается в следующем:
У меня есть ID: числа в порядке (внутри массива), но MySql не заботится об этом порядке. MySql сначала отображает самый старый элемент независимо от того, в каком порядке находится массив.
Итак, один и тот же запрос отображается с двумя разными «направлениями массива»:
SELECT mt.*, fordon.* FROM classified mt LEFT JOIN fordon ON fordon.classified_id = mt.classified_id WHERE mt.ad_id IN ('Bmw_520i_Svensksald_784332731', 'Bmw_M3_Svensksald_755599519', 'Bmw_M3_E46_Full-utrustad_338210082')
SELECT mt.*, fordon.* FROM classified mt LEFT JOIN fordon ON fordon.classified_id = mt.classified_id WHERE mt.ad_id IN ('Bmw_M3_E46_Full-utrustad_338210082', 'Bmw_M3_Svensksald_755599519', 'Bmw_520i_Svensksald_784332731')
Как вы можете видеть, идентификаторы поменялись местами во втором запросе выше ... Но они все равно отображаются в том же порядке. Почему?
Должен ли я использовать какой-то другой метод поиска всех совпадений MySql с ID: s из массива?
Идеи
Спасибо