За последние 24 часа нас посетили 10367 программистов и 941 робот. Сейчас ищут 336 программистов ...

Выборка из результата

Тема в разделе "PHP и базы данных", создана пользователем kmvtut, 14 фев 2022.

  1. kmvtut

    kmvtut Новичок

    С нами с:
    14 фев 2022
    Сообщения:
    3
    Симпатии:
    0
    Добрый день. Делаем фильтр на сайте. Есть таблица в которой есть поля paramid, collectionid. Есть фильтр, из которого прилетают значения paramid. Там чекбоксы.
    paramid collectionid
    195 - 2
    169 - 2
    123 - 2
    122 - 2
    169 - 3
    195 - 4
    231 - 5
    221 - 3
    123 - 3
    145 - 3
    212 - 2
    243 - 5
    211 - 5
    231 - 4
    169 - 4
    278 - 4
    Вот например. Получаем параметр 195. Мне надо получить список параметров тех коллекций у которых есть параметр 195 и сгруппировать по количествам. То есть 195 есть у коллекции 2 и 4. Соответственно в результате должны получить массив параметров 169, 195,123,122, 231,212,278 и напротив каждого желательно у скольких позиций он есть 195 - 2 коллекции, 169 - 2 коллекции и так далее. Потом скажем пользователь из оставшихся нажимает следующий чекбокс с параметром 122 и вот тут надо выбрать только из оставшихся... значений в таблице около 6000... как сделать нарастающую так скажем выборку из выборки
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.441
    Симпатии:
    1.249
    Адрес:
    Лень
  3. kmvtut

    kmvtut Новичок

    С нами с:
    14 фев 2022
    Сообщения:
    3
    Симпатии:
    0
    К сожалению PDO не вариант пользоваться. Система существующая и там нет поддержки PDO. Может есть другие способы?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.441
    Симпатии:
    1.249
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. $a = [
    4.     [1,1],
    5.     [1,1],
    6.     [1,1],
    7.     [2,1],
    8.     [3,1],
    9.     [3,1],
    10.     [4,1],
    11. ];
    12.  
    13. $b = [];
    14.  
    15. foreach ( $a AS [ $first, $second ] )
    16. {
    17.     $b[$first][] = $second;
    18. }
    19.  
    20. print_r ( $b );
     
  5. kmvtut

    kmvtut Новичок

    С нами с:
    14 фев 2022
    Сообщения:
    3
    Симпатии:
    0
    Вопрос решился построением cross join по нарастающей - все корректно работает. Следующий join выбирает из предыдущего...