Zobrazující odlišné hodnoty s Kamenivo

hlasů
-1

Mám tabulku pro záznam denní cenu od různých dodavatelů. Mým cílem je najít nejlepší (nízká cena) dodavatele. Struktura tabulky je tabulka Jméno: LAB1 sloupce: ID, product_id, Price_date, Cena, Dodavatel

-----------------------------------------------------------------------------------
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
------------------------------------------------------------------------------------------

Vytvořit strukturu tabulky

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 IGNORE  INTO  lab1(ID, Product_ID, Price_Date, Price, Supplier) VALUES
(1, 8, '2014-10-26', 1300.00, 'SP1');
INSERT IGNORE  INTO  lab1(ID, Product_ID, Price_Date, Price, Supplier) VALUES
(2, 8, '2014-10-05', 1600.00, 'SP2');
INSERT IGNORE  INTO  lab1(ID, Product_ID, Price_Date, Price, Supplier) VALUES
(3, 8, '2014-10-15', 1300.00, 'SP1');
INSERT IGNORE  INTO  lab1(ID, Product_ID, Price_Date, Price, Supplier) VALUES
(4, 8, '2014-10-14', 1200.00, 'SP3');

I NEED Výsledek vypadá JAKO NÍŽE

--------------------------------------------------------------------------------------
ID  Product_ID  Month   Price   Supplier
--------------------------------------------------------------------------------------
4   8           October 1200    SP3
-------------------------------------------------------------------------------------------

Prosím pomozte...

Položena 26/10/2014 v 05:24
uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Můžete použít vlastní spoj s ID produktu a minimální výši ceny, která má mít co nejnižší cenu za řádek Product ID

select l.ID,
l.Product_ID,
monthname(l.Price_Date) `Month`,
l.Price,
l.Supplier
from lab1 l
join (select Product_ID,min(Price) Price
     from lab1
     group by Product_ID) l1
using(Product_ID,Price)

DEMO

Odpovězeno 26/10/2014 v 05:34
zdroj uživatelem

hlasů
0
select temp2.id,
       temp2.Product_ID,
       DATENAME(month, temp2.Price_Date) AS MONTH,
       temp1.Min_Price,
       temp2.Supplier
from
(
     select Product_ID, min(Price) as Min_Price
     from lab1
     group  by Product_ID
) as temp1
inner join
lab1 temp2
on temp1.Product_ID = temp1.Product_ID
and temp1.Min_Price = temp2.Min_Price
Odpovězeno 26/10/2014 v 05:40
zdroj uživatelem

hlasů
0

Myslím, že hledáte:

vyberte l.ID, l.Product_ID, MonthName (l.Price_Date) jako Month, l.Price, l.Supplier

from lab1 l join
     (select Product_ID, year(l.Price_date) as yr, month(l.Price_Date) as mon, min(Price) as Price
      from lab1
      group by Product_ID, year(l.Price_date), month(l.Price_Date)
     ) lmin
     on l.Product_id = lmin.Product_id and
        year(l.Price_Date) = lmin.yr and
        month(l.Price_Date) = lmin.mon;

Pokud se chcete data pouze za říjen, přidejte whereklauzuli:

where l.Price_Date >= '2014-10-01' and l.Price_Date < '2014-11-01'
Odpovězeno 26/10/2014 v 10:38
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more