У меня есть таблица с именем top_trends
, которая имеет следующую схему:
id int(11) AI PK
criteria_id int(11)
value varchar(255)
created_at timestamp
updated_at timestamp
Затем у меня есть другая таблица с именем search_criterias
, которая имеет следующую схему:
id int(11) AI PK
title varchar(255)
created_at timestamp
updated_at timestamp
Вот запрос, который предоставляет значение на основе максимального количества записей по значению. Итак, если есть 2 записи в top_trends
, в которых обе имеют criteria_id
в качестве 1, и обе имеют значения 3 в столбце top_trends.value
, а затем отдельную запись SINGLE с таким же параметром crit_id 1, но значением 2, запрос выдаст результат, когда выбранные критерии (равные 1) имеют значение 3, поскольку значение 3 встречается больше раз, чем любые другие строки значений с crit__1. Таким образом, в простых терминах запрос выбрал значение 3 для идентификатора критерия 1 потому что это происходило чаще всего на основе записей в top_trends, имеющих criteria_id
1
select
x.value as `values`
, sc.id as id
, sc.title
, sc.created_at
, sc.updated_at
, x.criteria_id as search_category_id
from
(
select
criteria_id
, `value`
from
top_trends
group by
`criteria_id`
order by
`value`
) x
left join search_criterias sc
on sc.id = x.criteria_id
group by
criteria_id
Моя проблема в том, что, к сожалению, сейчас у нас нет данных для всех возможных search_criterias
, поэтому некоторые из записи в таблице search_criteria
не объединяются в моем запросе.
Например, у нас есть запись search_criteria для города с идентификатором 5, но в таблице top_trends нет записей с критерием_данных 5 ... поэтому приведенный выше запрос не включает этот критерий поиска.
Что я хотел бы сделать, так это включить в таблицу search_criteria
те записи, которые не находятся в таблице top_trends
, но имеют атрибут values
как null