чето я подтупливаю с запросом есть 4 таблицы t1 продукт - p_id, name t2 ссылка на продукт - p_id, url t3 информация о продукте - id, p_id, inf_typ, inf_val t4 справочник вариантов информации - inf_typ, inf_name Код (Text): SELECT * FROM t1 JOIN t4 LEFT JOIN t3 USING (p_id) LEFT JOIN t2 USING (p_id) WHERE t1.p_id = 101 GROUP BY (t4.inf_typ) смысл забрать все данные из этих таблиц одним запросом. Проблема вот в чем. Если в t3 о данном продукте нет ничего, то выдается N строк с NULL в полях t3.id, t3.inf_typ, t3.inf_val что норм, по следующему полю я получил N строк какие вообще варианты есть (inf_name). Но если данные в t3 есть, то не важно сколько их вариантов, всегда выдается значение первого. если поменять GROUP BY (t3.inf_typ), то наоборот, если данные есть то все красиво выводится - inf_name -> inf_val. Но если данных в t3 нет то идет одна строка, потому что получается GROUP BY NULL (Допустим N=3, варианты инфо это описание, большое описание, и малюсенькое описание...)
в конкретном приложении это не принципиально, количество данных не большое, можно и три запроса сделать отдельно, на каждую таблицу по p_id, но просто было интересно. в общем решил комбинацией ON (OR AND OR) отказавшись от прямых USING()
@SibBear , начнём с того, что звёздам в реальных запросах не место. Тем более с джоинами. И тем еще более с группировкой. Необходимо точно указать какое поле из какой таблицы необходимо получить в результате. А при группировке чаще всего еще и конкатенация потребуется ( GROUP_CONCAT() )
звезда уйдет когда таблицы будут закончены, сейчас еще правки, что то меняется что то добавляется....
За отмаз не катит --- Добавлено --- @SibBear, сейчас MySQL умеет работать с JSON типом полей. Почитайте как это используют для хранения характеристик товаров. Хотя на самом деле интернет магазин это большой и сложный организм, а не только хранение и вывод товаров по категориям. Так что дальше баловства для общего развития у Вас ничего не получится
ниче, 10 лет на моем магазине народ работает и у всех получается, появилась надобность себе сделать, а там 10 лет ниче не менялось вот и сидю развлекаюсь пока мне шаблон рисуют, с этим чето ваще бяда, старею, вдохновение не приходит на креатив ))))
Полагаю речь о скачанном 10 лет назад скрипте с какого-нибудь забугорного сайта, или всё-таки речь о написанном единолично собственными руками с нуля коде? Можно ссылочку в личку? P/S Очень часто слышу, когда человек берёт бесплатный скрипт устанавливает на него бесплатный шаблон и говорит - я сделал сайт
По поводу * знаешь, что мне не нравится в прямом указании, когда тебе приходит seoшник и говорит мне надо еще вот такое и вот такое поле, приходится лезть в код и дописывать запросы, а так у администратора есть справочник, куда он просто добавляет "novoe_seo_pole", и в шаблон добавляет в нужном месте <?php echo $seo_field['novoe_seo_pole']; ?> при небольшом объеме данных изменения в скорости не значительны. Хотя законченный проект перед запуском да, поля пропишу явно. Сейчас пока некоторые поля перемещаются с таблицы в таблицу ))
@SibBear, сделайте демонстрационный пример с набором исходных данных на db-fiddle. Для начала хоть будет понятно, сколько в t3 может быть записей для пары (p_id, inf_typ)