один продукт имеет несколько цен

0

я пробовал сейчас 2 дня и делаю исследование об этом, но я не нахожу никакого решения для этого

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

поэтому в идентификационном номере продукта 2 есть 3 цены.

поэтому, если продукт имеет единую цену, то каждый продукт будет иметь свою цену, если продукт имеет несколько цен, а затем отображает минимальную цену $ 19,00 __ $ 26,00 максимальная цена.

так как я могу это сделать?? как я могу отобразить его на странице???

product (id,  price)
         1     1
         2     2
         3     3
product_has_price (product_id, price_id)
                       1         1
                       2         2
                       2         3
                       3         4
                       2         5
price (id,  price)
        1   14.00
        2   19.00
        3   24.00
        4   35.00
        5   26.00

спасибо, если кто-нибудь поможет

  • 2
    ВЫБЕРИТЕ МИН ( price ), МАКС ( price ) ОТ price ... И некоторые присоединяются здесь :)
  • 0
    Вы можете использовать GROUP_CONCAT и группировать по идентификатору продукта. Затем в вашем PHP-коде разбейте столбец на ','. Если у вас более одной цены, отобразите минимальную / максимальную цену, в противном случае отобразите одну цену.
Показать ещё 5 комментариев
Теги:

1 ответ

1
Лучший ответ
select  p.id
,       case 
        when min(i.price) <> max(i.price) then 
            concat('$ ', min(i.price), '__ $ ', max(i.price))
        else concat('$ ', min(i.price))
        end as PriceDescription
from    product p
join    product_has_price php
on      p.id = php.product_id
join    price i
on      i.id = php.price_id
group by
        p.id
  • 0
    Я не могу понять отрицательный голос.
  • 0
    Спасибо, Андомар, он работает хорошо, но единственное, что нужно назвать столбцом цены, чтобы я мог отобразить его в тот момент, когда он дает CASE WHEN MIN (i.price) <> MAX (i.price) THEN CONCAT ('$', MIN (i.price), '__ $', MAX (i.price)) ELSE CONCAT ('$', min (i.price)) END имя столбца цены
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню