I have a table for recording daily price from different suppliers. My goal is to find the best (low price) supplier. The table structure is Table Name: lab1 Columns: ID, Product_ID, Price_date, Price, Supplier
-----------------------------------------------------------------------------------
ID Product_ID Price_date Price Supplier
--------------------------------------------------------------------------------------
1 8 26-10-2014 1300 SP1
2 8 05-10-2014 1600 SP2
3 8 15-10-2014 1300 SP1
4 8 14-12-2014 1200 SP3
------------------------------------------------------------------------------------------
Create Table Structure
CREATE TABLE clickpic_pricecompare.lab1 (
ID int(11) NOT NULL AUTO_INCREMENT,
Product_ID int(11) DEFAULT NULL,
Price_Date date DEFAULT NULL,
Price decimal(19, 2) DEFAULT NULL,
Supplier varchar(255) DEFAULT NULL,
PRIMARY KEY (ID)
)
ENGINE = MYISAM
COMMENT = 'testing-purpose';
INSERT INTO lab1(ID, Product_ID, Price_Date, Price, Supplier) VALUES
(1, 8, '2014-10-26', 1300.00, 'SP1');
INSERT INTO lab1(ID, Product_ID, Price_Date, Price, Supplier) VALUES
(2, 8, '2014-10-05', 1600.00, 'SP2');
INSERT INTO lab1(ID, Product_ID, Price_Date, Price, Supplier) VALUES
(3, 8, '2014-10-15', 1300.00, 'SP1');
INSERT INTO lab1(ID, Product_ID, Price_Date, Price, Supplier) VALUES
(4, 8, '2014-10-14', 1200.00, 'SP3');
I NEED THE RESULT LOOKS LIKE BELOW
--------------------------------------------------------------------------------------
ID Product_ID Month Price Supplier
--------------------------------------------------------------------------------------
4 8 October 1200 SP3
-------------------------------------------------------------------------------------------
Please help...
You can use self join with the product id and minimum amount of price to get the lowest price row per product id
DEMO
I think you are looking for:
select l.ID, l.Product_ID, monthname(l.Price_Date) as
Month
, l.Price, l.SupplierIf you want data only for October, then add a
where
clause: