motto13
@motto13
Вечно молодой

Как получить все записи которые гарантируют 6 совпадений из 7?

MySQL 5.7 PDO
Бриф система ставок
Структура таблицы:
id, c1, c2, c3, c4, c5, c6, c7
id - идентификатор
с1,...c7 - значения 0, 1, 2,
пример записей в таблице
id, c1, c2, c3, c4, c5, c6, c7
1, 1, 1, 1, 1, 1, 1, 1
2, 1, 1, 1, 1, 1, 1, 0
3, 1, 1, 1, 1, 1, 1, 2
4, 1, 1, 1, 1, 1, 0, 1
5, .....
Пример запроса который выбирает все записи которые гарантируют совпадение 7 из 7
$query = "SELECT id FROM test ";
  $query .= " WHERE  (c1= 1 OR c1=0 OR c1=2) AND (c2= 1 OR c2=0) AND (c3=1 OR c3=2) AND c4=1 AND c5=1 AND c6=1 AND c7=1  ";

Задача, Каким запросом получить все записи которые гарантируют 6 совпадений из 7, ( или 5 из 7)?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Если Вы используете MySQL то запрос может быть таким:
SELECT id, (c1=1) + (c2=0) + (c3=1) + (c4=1) + (c5=1) + (c6=1) + (c7=1) FROM test 
WHERE ((c1=1) + (c2=0) + (c3=1) + (c4=1) + (c5=1) + (c6=1) + (c7=1)) >= 6
;

run sql online
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@402d
начинал с бейсика на УКНЦ в 1988
Хмм. А зачем так издеваться над муской ?
В таблице у Вас 3 в 7 степени записей 2178.
А что такое 6 из 7. Не совпала одна цифра.
Таких ситуаций 7 . Не совпала 1,2, и т.д.
на ее месте значит два других из 3х значений.
Получаем всего будет 14.

Пишется в два вложенных цикла на любом ЯВУ.
Или муська здесь принципиально и в один запрос ?

Тогда юнион 7 запросов где в where пишите условия
первая цифра не равна, остальные равны.
и по очереди неравенство сдвигаете до последней цифры.

15 результат совпали 7 из 7
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы