Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
В общем есть следующий sql запрос:
SELECT id, count(id )
FROM (SELECT DISTINCT * FROM tablica
WHERE text
IN ("text1", "text2" тут массив из элементов)) as t1
GROUP id
Как из него сделать работоспособный запрос? Пробовал через DB::select, но он работает не корректно
Если кому-то понадобится вот решение, правда еще не разобрался где накосячил т.к. врет немного.
DB::table(DB::raw('('.DB::table('tablica')->distinct()->whereIn('text', $array)->toSql().') as t1'))->select(DB::Raw('id, count(id )'))->groupBy('id')->get();
Довольно странный запрос, мне кажется у тебя ошибка в логике. Если id — это как обычно уникальное числовое поле, то нет смысла делать COUNT или GROUP BY id — id ведь и так одни на таблицу, поэтому COUNT будет 1, а GROUP BY просто ничего не изменит (т.к. поле для группировки — уникальное).
В чём назначение запроса? Посчитать число текстов, которые совпадают с массивом? Зачем тогда подзапрос?
sqlSELECT id или COUNT(1) FROM tablica WHERE text IN (...)
Не в сети
}%Довольно странный запрос, мне кажется у тебя ошибка в логике. Если id - это как обычно уникальное числовое поле, то нет смысла делать COUNT или GROUP BY id - id ведь и так одни на таблицу, поэтому COUNT будет 1, а GROUP BY просто ничего не изменит (т.к. поле для группировки - уникальное).
В чём назначение запроса? Посчитать число текстов, которые совпадают с массивом? Зачем тогда подзапрос?
%%(sql)
SELECT id или COUNT(1) FROM tablica
WHERE text IN (...)
%%
Пробела в том, что и id и text не уникальные поля, там и повторы периодически проскальзывают.
Вкратце нужно найти все id'ы у которых text'ы с массивом совпадают. Подзапрос здесь нужен т.к. почему-то DISTINCT и order by одновременно не работают, т.е. показывает не совсем ожидаемые результат если в таблице имеются повторы (оно не часто, но где-то 2-3 на тысячу строк проскальзывает).
Как вариант конечно просто чистить от повторов и не использовать подзапрос, но боюсь это слишком геморойно для таблицы с десятками миллионов записей, в которой даже индексов нету т.к. они занимают раза в 1.5 больше места, чем сама таблица.
DISTINCT и order by
Опечатался тут, а исправить не могу, к сожалению, disctinct и group by
Нафлудил от души чот, в общем решил забить на все эти составные запросы и просто добавить уникальный индекс к таблице, благо таблица растет не так быстро как ожидалось.
Страницы 1