(SELECT t2.name AS aaa FROM t2 INNER JOIN t1 ON t2.name REGEXP CONCAT("^",t1.name,"\n") ORDER BY ABS(t1.addtime-t2.addtime) ASC LIMIT 0,1)
UNION
(SELECT t2.name AS aaa FROM t2 INNER JOIN t1 ON t2.name REGEXP CONCAT("\n",t1.name,"$") ORDER BY ABS(t1.addtime-t2.addtime) ASC LIMIT 0,1)
выборка ближайших полей
надо выбрать данные, чтобы к обоим строкам t1.names соответствовали поля t2.names и t1.addtime и t2.addtime были ближайщими... в t1.names может лежать как 2 строки через разделитель, так и одна... это можно реализовать одним запросом к бд?
Вообще, следует пользоваться в данном случае директивой MySQL "LIKE".
От себя хочу заметить, что структура БД реализована плохо, если возникают такие задачи. Возможно, Вам следует задуматься над переформированием структуры БД.
Цитата:
Не очень понятно, сколько t2-записей нужно вернуть - по количеству строк в t1.names?
Вообще, следует пользоваться в данном случае директивой MySQL "LIKE".
От себя хочу заметить, что структура БД реализована плохо, если возникают такие задачи. Возможно, Вам следует задуматься над переформированием структуры БД.
да, по количеству строк t1.names
бд можно перестроить, чтобы было например t1.name1 и t2.name2
LIKE не представляю как использовать... в полях addtime число, когда запись была добавлена в бд, хранится там пхпшное time()... по сути надо объединить значения, которые было добавлены приблизительно в одно время... объединить таблицы в одну не представляется возможным...
Код:
напрочь забыл про ORDER BY ABS(t1.addtime-t2.addtime) =))
В Вашем случае ABS() не нужен, достаточно разок расставить большее меньше меньшего. Просто я ж не знаю что у вас там раньше :)