Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Извлечь цену из таблицы

Сообщения:  [1-10]   [11-11] 

 
 автор: cheops   (20.08.2006 в 18:26)   письмо автору
 
   для: tAleks   (20.08.2006 в 13:51)
 

>Я вот сейчас экспериментирую, и что с ней, что без нее результат одинаковый.
В принципе так и есть, это из-за условия prices_type.id_base_price = price.id_price_type, но если бы его не было, то выводилось бы слишком много дублированных записей, GROUP BY позволяет группировать такие записи по определённому полю.

   
 
 автор: tAleks   (20.08.2006 в 13:51)   письмо автору
 
   для: cheops   (19.08.2006 в 16:18)
 

Запрос в принципе работает. Спасибо.

А зачем вот эта строка:

GROUP BY prices_type.id_price_type 


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

   
 
 автор: cheops   (20.08.2006 в 00:48)   письмо автору
 
   для: Trianon   (19.08.2006 в 18:56)
 

Согласен.

   
 
 автор: Trianon   (19.08.2006 в 18:56)   письмо автору
 
   для: cheops   (19.08.2006 в 16:18)
 

Только не WHERE а ON

   
 
 автор: cheops   (19.08.2006 в 16:18)   письмо автору
 
   для: tAleks   (19.08.2006 в 12:01)
 

Тогда попробуйте следующий запрос
SELECT prices_type.id_price_type AS id_price_type, 
       prices_type.name AS name, 
       prices_type.id_currency AS id_currency,  
       price.name AS id_base_price , 
       prices_type.commentary AS commentary 
FROM prices_type LEFT JOIN prices_type AS price 
WHERE prices_type.id_base_price = price.id_price_type  
GROUP BY prices_type.id_price_type

   
 
 автор: tAleks   (19.08.2006 в 12:01)   письмо автору
 
   для: cheops   (19.08.2006 в 11:39)
 

Попробовал.....

Если в таблице есть записи, у которых нет базовой цены, то они не попадают в результат запроса. Т.е. из такой таблицы:

-------------------------------------------------------------------------- 
id_price_type  | name         | id_currency | id_base_price | commentary | 
-------------------------------------------------------------------------- 
1               Входная         1             0           Цена покупки 
2               Цена клиента    1             1              Цена для клиента 
3               VIP             1             0              Цена для VIP клиента 
-------------------------------------------------------------------------- 


Извлекается только запись 2. А надо чтобы все извлекались.

   
 
 автор: cheops   (19.08.2006 в 11:39)   письмо автору
 
   для: tAleks   (19.08.2006 в 10:49)
 

Можно поступить следующим образом
SELECT prices_type.id_price_type AS id_price_type,
       prices_type.name AS name,
       prices_type.id_currency AS id_currency, 
       price.name AS id_base_price ,
       prices_type.commentary AS commentary
FROM prices_type, prices_type AS price
WHERE prices_type.id_base_price = price.id_price_type 
GROUP BY prices_type.id_price_type

   
 
 автор: tAleks   (19.08.2006 в 10:49)   письмо автору
 
   для: cheops   (19.08.2006 в 00:24)
 

Тиблица `prices_type`

--------------------------------------------------------------------------
id_price_type  | name         | id_currency | id_base_price | commentary |
--------------------------------------------------------------------------
1               Входная         1             NULL           Цена покупки
2               Цена клиента    1             1              Цена для клиента
3               VIP             1             2              Цена для VIP клиента
--------------------------------------------------------------------------


Т.е. "Цена клиента" имеет базовую цену "Входная", и к примеру потом может рассчитываться динамически,

берем базовую цену ("Входная"), прибавляем 5% и получаем "Цена клиента".

А "VIP" имеет базовую цену "Цена клиента" и уже рассчитывается относительно этой базоовой цены.

Все примерно как в "1С: Торговля и Склад" (только упроцено).


Нужен запрос чтобы сделать вот такую таблицу:


--------------------------------------------------------------------------
id_price_type  | name         | id_currency | id_base_price | commentary |
--------------------------------------------------------------------------
1               Входная         1                            Цена покупки
2               Цена клиента    1             Входная        Цена для клиента
3               VIP             1             Цена клиента   Цена для VIP клиента
--------------------------------------------------------------------------


Чтобы в поле "id_base_price" были не циферки а названия этих цен.

И если это не правильно, то как сделать с двумя таблицами?

   
 
 автор: cheops   (19.08.2006 в 00:24)   письмо автору
 
   для: tAleks   (18.08.2006 в 19:47)
 

Хм... а с двумя таблицами не проще выйдет? Что-то не очень понятно, что таблица моделирует и какой запрос нужно осуществить?

   
 
 автор: tAleks   (18.08.2006 в 20:34)   письмо автору
 
   для: tAleks   (18.08.2006 в 19:47)
 

Народ!!!! ХЕЛП!!!! Гарю!!!!

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования