(PHP / MySQL) Позвольте мне предисловие, сказав, что это работает, и что мне интересно, есть ли более чистый способ. Это кажется немного ... жестоким? И я не известен своим эффективным кодированием. : - /
TABLE (many-to-many)
scenid mapid
AA 01
AA 02
AA 04
BB 01
BB 04
CC 02
CC 03
CC 05
DD 01
DD 02
DD 03
Вы ищете сценарии, в которых есть ВСЕ эти карты: 01, 02, 03
(имея все + некоторые другие в порядке)
Мой текущий метод заключается в использовании этого запроса:
SELECT scenid, COUNT(scenid) FROM `TABLE`
WHERE mapid IN ( 01, 02, 03 )
GROUP BY scenid ORDER BY COUNT(scenid) DESC, scenid ASC
Что бы создать этот список:
scenid COUNT
DD 3
AA 2
CC 2
BB 1
Затем в PHP я запускаю цикл while
, который копирует сцены в новый массив до тех пор, пока COUNT
по-прежнему ==
от общего числа mapids (в данном случае 3). Это обрезает все результаты, которые содержат только некоторые из требуемых карт.
Опять же, , это работает. Но я все еще очень плохо знаком с MySQL и PHP (и это мои первые шаги в программировании), поэтому мне всегда интересно, работает ли мой " *"это чужое" ты видел, что идиот просто изобретает велосипед? lulz "
Есть ли лучший способ? Спасибо за ваше время.