none
Veritabanından en son tarihe göre veri bulma RRS feed

  • Soru

  • Iyi akşamlar. Postgrsql-de tablo yapım böyledir.

    CREATE TABLE product
    (
    id serial PRIMARY KEY NOT NULL,
    barcode varchar(50) UNIQUE NOT NULL,
    productname varchar(50) UNIQUE NOT NULL,
    categoryid int NOT NULL,
    FOREIGN KEY(categoryid) REFERENCES categories(id) on delete cascade on update cascade
    );
    
    
    CREATE TABLE buy
    (
    id serial PRIMARY KEY NOT NULL,
    productid int NOT NULL,
    miqdar int NOT NULL,
    alis numeric(6,2) NOT NULL,
    tarix TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY(productid) REFERENCES product(id) on delete cascade on update cascade
    );

    Istediyim bu ki, urunun en son tarihde alınan zaman alış fiyatını bulmakdır. Bunun için max(tarih) kullandım. Aşağıdakı gibi. Tarih kısmı dogru geliyor ama alis_fiyat kısmı ilk tarihde olanı buluyor. Ben MAX kullanmama ramen neden böyle oluyor anlamıyorum.Nerde yanlış yapıyorum?

    Not: FirstOrDefault kullandığım için böyle oluyor? Öyleyse max(tarih) ne için qruplamada yapmışım her urunden bir tane geliyor zaten.

     var q = from n in ctx.buys
                        group n by n.productid into g                    
                        select new { Id = g.Max(t => t.tarix), ProductId= g.Key, Product = g.FirstOrDefault().product.productname,  Alis_fiyati = g.FirstOrDefault().alis};
      


    21 Ağustos 2019 Çarşamba 22:07

Yanıtlar

Tüm Yanıtlar