PDA

View Full Version : دستور select در mysql



cnmeysam
پنج شنبه 13 اردیبهشت 1397, 00:56 صبح
سلام
یه سوال فنی داشتم:لبخند:
من یه دیتا بیس دارم که توش توی تاریخ های متفاوت تعدادی مواد ثبت شده مثلا دیروز ماده الف با قمت مثلا 1 امروز همون ماده الف با قیمت مثلا 2 ثبت شده
حالا فرض کنید توی این تیبل 10 تا ماده وجود داره با مشخصات بالا توی بازه زمانی مثلا 1سال
یعنی 10 تا ماده داریم که توی تاریخ های مختلف قیمت بعضی هاشون تغییر کرده
حالا از ترکیب این مواد یه محصول به دست اومده
با چه دستوری میتونم بگم مثلا جمع قیمت این مواد به نرخ تاریخی که میدم چقدر میشه
یعنی در درجه اول باید همه مواد رو مشخص کنم با آخرین نرخ مثلا امروز و این در حالیه که ممکنه یک ماده اصلا قیمتش توی این 1سال تغییر نکرده باشه و 1ماره تا دیروز یه قیمت بوده ولی امروز قیمتش عوض شده پس باید قیمت امروز رو برای محاسبه حساب کنم و توی محاصبه از تکرار هم جلو گیری بشه؟
کد من اینه ولی اشکال کار اینجاست که وقتی بخوام قیمت مثلا هفته گذشته رو حساب کنم میاد قیمت مواد رو توی روزهای آینده هم محاسبه میکنه یعنی مثلا نمک رو 100 بارم بعد تاریخ امروز ثبت کرده باشم توی لیست میاره








SELECT * FROM `price_of_product_containers`
where date_of_manufacture in (select max(date_of_manufacture)
from price_of_product_containers group by packagetype ) and packagetype not in
(SELECT packagetype FROM `price_of_product_containers`
where date_of_manufacture ='1396/07/05')




union




SELECT * FROM `price_of_product_containers`
where date_of_manufacture ='1396/07/05'








148097





همونطور که توی عکس میبینید نمک 2 بار تکرار شده در حالی که باید یک بار نمایشش بده و قیمت مواد رو فقط تا پنجم نمایش بده
یعنی آخرین قیمت مواد تا پنجم ماه مثلا

cnmeysam
پنج شنبه 13 اردیبهشت 1397, 10:38 صبح
توی این حالت هم باز به مشکل میخوره و باز آخرین تاریخی که یه ماده رو با قیمت جدید ثبت کردم نمیاره




SELECT DISTINCT * FROM `tbl_ingredientprices` WHERE date<='1396/11/08' GROUP BY materialname ORDER BY materialname

Mahmoud.Afrad
پنج شنبه 13 اردیبهشت 1397, 12:32 عصر
در بخش mysql بپرسید.

cnmeysam
پنج شنبه 13 اردیبهشت 1397, 17:05 عصر
ممنون مشکل حل شد



SELECT DISTINCT
max( date ) AS date,
materialname,
measurementunit,
price,
moneytype
FROM
`tbl_ingredientprices`
WHERE
date <= '1396/10/08'
GROUP BY
materialname