Задать вопрос
  • Как отсортировать массив?

    @nata32 Автор вопроса
    дописала перед GROUP BY 1, 2
    WHERE grup_id = $grup_id
    правильно прописада ?
    вроде работает правильно, но притормаживает
    пробовала менять HAVING COUNT(*) > 1
    на HAVING COUNT(*) = 5, так как в группе 5 товаров, вообще нечего не выводит
    пробовала и 10 и 15 и 20, тот же результат, нечего
  • Как отсортировать массив?

    @nata32 Автор вопроса
    Например, для 3 товаров и атрибутов, имеющихся у всех трёх, это будет HAVING COUNT(*) = 3

    значит надо сначала посчитать количество товаров ?
    а где в запросе условие что нужно выбирать только товары по grup_id ?
  • Как отсортировать массив?

    @nata32 Автор вопроса
    Akina, https://dbfiddle.uk/qeC4YqkJ
    известно только входящие grup_id для данного примера 17594 и (хотя это не особо важно) attribute_group_id для данного примера это 7, на выходе должно получиться

    spoiler
    [name] =>Тип арматуры
    [text] =>Шаровой кран
    [name] =>Применение
    [text] =>Водоснабжение, теплоснабжение
    [name] =>Тип крана
    [text] =>Полнопроходной
    [name] =>Присоединение
    [text] =>Резьба
    [name] =>Тип привода
    [text] =>Ручка-рычаг
    [name] =>Рабочая среда
    [text] =>Вода, водный раствор гликоля до 50%
    [name] =>Температура рабочей среды, °C
    [text] =>-20...+185
    [name] =>Материал корпуса
    [text] =>Латунь хромированная
    [name] =>Страна бренда
    [text] =>Италия
    [name] =>Страна-производитель
    [text] =>Италия
    [name] =>Рабочее давление, бар
    [text] =>35
    [name] =>Резьба
    [text] =>ВР

    так как они одинаковые для обоих товаров
  • Как отсортировать массив?

    @nata32 Автор вопроса
    Добрый день
    совершенно непонятно, что в вопросе делает PHP.

    Akina, потому что сначало думала решить задачу с помощью php, но тут посоветовали решить просто запросом к базе
    Указываете точную версию СУБД.

    Версия сервера: 10.3.36-MariaDB - MariaDB Server
    Выкладываете полные CREATE TABLE всех таблиц

    spoiler
    product` (
        `product_id` int(11) NOT NULL,
        `model` varchar(64) NOT NULL,
        `sku` varchar(64) NOT NULL,
        `grup_id` varchar(128) NOT NULL,
        `quantity` int(4) NOT NULL DEFAULT 0,
        `stock_status_id` int(11) NOT NULL,
        `image` varchar(255) DEFAULT NULL,
        `manufacturer_id` int(11) NOT NULL,
        `shipping` tinyint(1) NOT NULL DEFAULT 1,
        `price` decimal(15,4) NOT NULL DEFAULT 0.0000,
        `weight` decimal(15,8) NOT NULL DEFAULT 0.00000000,
        `weight_class_id` int(11) NOT NULL DEFAULT 0,
        `length` decimal(15,8) NOT NULL DEFAULT 0.00000000,
        `width` decimal(15,8) NOT NULL DEFAULT 0.00000000,
        `height` decimal(15,8) NOT NULL DEFAULT 0.00000000,
        `length_class_id` int(11) NOT NULL DEFAULT 0,
        `subtract` tinyint(1) NOT NULL DEFAULT 1,
        `minimum` int(11) NOT NULL DEFAULT 1,
        `sort_order` int(11) NOT NULL DEFAULT 0,
        `status` tinyint(1) NOT NULL DEFAULT 0,
        `viewed` int(5) NOT NULL DEFAULT 0,
        `date_added` datetime NOT NULL
    )
    
    product_attribute` (
        `product_id` int(11) NOT NULL,
        `attribute_id` int(11) NOT NULL,
        `language_id` int(11) NOT NULL,
        `text` text NOT NULL
     )
    
       attribute` (
        `attribute_id` int(11) NOT NULL,
        `attribute_group_id` int(11) NOT NULL,
        `sort_order` int(3) NOT NULL
    )
    
    attribute_description` (
        `attribute_id` int(11) NOT NULL,
        `language_id` int(11) NOT NULL,
        `name` varchar(64) NOT NULL
    )

    Проконтролировать работоспособность - обязательно

    по дефолту все работает, в карточке есть общее описание с характеристиками (подтягиваются все характеристики, а нужны только общие), а ниже перечень товаров данной группы со своими характеристиками
    Выкладываете пример данных в виде INSERT INTO

    не поняла INSERT чего ?
    Можете сразу создать online fiddle и дать ссылку.

    к сожалению не знаю что это такое ((
    Выкладываете требуемый результат для именно этих данных. С подробным пояснением по практически каждой строке результата - "здесь так, потому что ...".

    выше вроде все объяснено, что как и почему или что то конкретно не понятно по вводным данным и получению результата ?
  • Как отсортировать массив?

    @nata32 Автор вопроса
    а это тут при чем ? я же не разрабатываю проект с 0.
  • Как отсортировать массив?

    @nata32 Автор вопроса
    В моём запросе сразу по grup_id это предполагается вытащить...сразу для данного раздела по всем товарам...

    я это понимаю, просто вы сказали что типа в запросе я пытаюсь получить что то по продукт айди, а в задаче стоит отсортировать, я и обьяснила почему я пытаюсь получить продукт айди а потом вытащить все атрибуты данных товаров и отсортировать.
    просто ход своих мыслей, возможно не правильный ход )
  • Как отсортировать массив?

    @nata32 Автор вопроса
    Вы пытаетесь по каждому product_id получать "что-то" в своём запросе...а из задачи(как я понял) нужно по всем товарам в этом grup_id вытащить характеристики одинаковые...

    по идентификатору нужно получить айди товаров данной группы (product_id) и уже из таблиц атрибутов по product_id вытаскиваются атрибуты принадлежащие каждому товару данной группы. нужно вытащить только те характеристики которые одинаковые во всех товарах этой группы.
  • Как отсортировать массив?

    @nata32 Автор вопроса
    по вашему запросу дает ошибку
    Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'P` ON `pa`.`product_id` = `P`.`id` LEFT JOIN attribute a ON (pa.attribute...' at line
  • Как отсортировать массив?

    @nata32 Автор вопроса
    Что мешает добавить логику из моего запроса в Ваш? Если конечно мой запрос подходит логически..

    логически подходит, сейчас и пытаюсь его прикрутить, но пока не получается, дает ошибки. буду пробовать
  • Как отсортировать массив?

    @nata32 Автор вопроса
    Человеческим языком если...нужно же вывести те характеристики, которые ОДИНАКОВЫЕ У ВСЕХ В ДАННОМ РАЗДЕЛЕ (grup_id) ? Так же?)

    в принципе так.
    но тут все немного сложнее, ваш запрос понятен, но он немного не подходит, так как название атрибута берется из другой таблице, то есть запрос сам на вывод атрибутов выглядит так
    SELECT a.attribute_id, ad.name, pa.text FROM product_attribute pa
     LEFT JOIN attribute a ON (pa.attribute_id = a.attribute_id)
     LEFT JOIN attribute_description ad ON (a.attribute_id = ad.attribute_id)
     WHERE pa.product_id = '" . (int)$result['product_id'] . "' AND a.attribute_group_id = '" . (int)$product_attribute_group . "'
     AND ad.language_id = '" . (int)$config_language_id . "' AND pa.language_id = '" . (int)$config_language_id . "' ORDER BY a.sort_order

    из 3 таблиц формируется
  • Как отсортировать массив?

    @nata32 Автор вопроса
    N, да, prostovlad, правильно все описал )))
  • Как отсортировать массив?

    @nata32 Автор вопроса
    N, так я и написала в вопросе что может проще сразу из базы выбрать нужные значения.
  • Как отсортировать массив?

    @nata32 Автор вопроса
    Почему ДВА массива в первом примере? А не в одном?

    задача такая, есть таблица товара и есть таблица атрибутов к каждому товару
    product_attribute` (
      `product_id` int(11) NOT NULL,
      `attribute_id` int(11) NOT NULL,
      `language_id` int(11) NOT NULL,
      `text` text NOT NULL

    продукты сгруппировны в группы по идентификатору grup_id выбираем айди товаров принадлежащих данной группе, потом циклом начинаем по айди товара выбирать атрибуты, и циклом получаем значения каждого товара, что выше и показано, у товаров есть общие значения для всей группы и значения уникальные для каждого товара, нужно оставить только общие значения для данной группы
  • Как сформировать запрос к БД?

    @nata32 Автор вопроса
    Rsa97, спасибо большое, круто ) все работает !
  • Как сформировать запрос к БД?

    @nata32 Автор вопроса
    вставляю то что вы написали в sql запрос в базе, выдает
    Найдено 1 ошибок при анализе.

    Неизвестный оператор. (near "WITH" at position 0)
  • Как сформировать запрос к БД?

    @nata32 Автор вопроса
    Не надо слов, выложите вывод команды SHOW CREATE TABLE product; в теге кода.

    и что это вам даст ? посмотреть кучу не относящих к вопросу данных ? ну если вы хотите
    CREATE TABLE `product` (
      `id` int(11) NOT NULL,
      `model` varchar(64) NOT NULL,
       `quantity` int(4) NOT NULL DEFAULT '0',
      `stock_status_id` int(11) NOT NULL,
      `image` varchar(255) DEFAULT NULL,
      `manufacturer_id` int(11) NOT NULL,
      `shipping` tinyint(1) NOT NULL DEFAULT '1',
      `price` decimal(15,4) NOT NULL DEFAULT '0.0000',
      `points` int(8) NOT NULL DEFAULT '0',
      `date_available` date NOT NULL DEFAULT '0000-00-00',
      `weight` decimal(15,8) NOT NULL DEFAULT '0.00000000',
      `weight_class_id` int(11) NOT NULL DEFAULT '0',
      `length` decimal(15,8) NOT NULL DEFAULT '0.00000000',
      `width` decimal(15,8) NOT NULL DEFAULT '0.00000000',
      `height` decimal(15,8) NOT NULL DEFAULT '0.00000000',
      `length_class_id` int(11) NOT NULL DEFAULT '0',
      `subtract` tinyint(1) NOT NULL DEFAULT '1',
      `minimum` int(11) NOT NULL DEFAULT '1',
      `sort_order` int(11) NOT NULL DEFAULT '0',
      `status` tinyint(1) NOT NULL DEFAULT '0',
      `viewed` int(5) NOT NULL DEFAULT '0',
      `noindex` tinyint(1) NOT NULL DEFAULT '1',
      `date_added` datetime NOT NULL,
      `date_modified` datetime NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    Не надо слов, выложите INSERT INTO с примером данных и требуемый ответ запроса с пояснениями.

    а при чем тут INSERT ? мне нечего создавать не надо, все уже создано

    Я как-то вообще не наблюдаю в таблице ничего про поставщиков

    а что вы хотели увидеть и при чем тут вообще информация кто поставщик ? поставщик дает прайс в ексел или xml формате, с него заливаются данные товары. в данную таблицу, все. что конкретно вы хотели увидеть ?
    А если у двух одинаковая минимальная цена с ненулевым количеством (которое тоже может быть одинаковым, кстати) - что выводить?

    такое практически не возможно, но возьмем что случилось, тогда не важно какой из этих товаров будет выводиться.

    VERSION()
    5.7.27-30