• Query tìm giá
  • Query tìm giá

    lmthu > 21-10-15, 09:04 AM

    Chào các bạn!
    Mình đang gặp khó nhờ các bạn giúp dùm:
    Mình có 2 table sau:
    1.  Table PhieuNL
    Sophieu   Ngaylap          MaNL    Soluong
    PNL001    20/08/2015    DO05    40
    PNL002    21/08/2015    DO05    40
    PNL003    07/09/2015    XA92    50
    PNL004    10/09/2015    DO05    40
    2.  Table GiaNL
    Ngaygia         MaNL    Giatien
    19/08/2015    DO05    13200
    03/09/2015    DO05    13420
    03/09/2015    XA92     18500
    Mình tạo 1 Query để lấy giá bán của từng loại nhiên liệu dựa theo ngày ý tưởng như sau:
    -  Dò tìm theo từng mã nhiên liệu (MaNL) của Table PhieuNL tham chiếu vào Table GiaNL theo ngày lập phiếu nếu tìm thấy sẽ lấy giá bán, nếu không thì sẽ lấy giá bán của ngày gần nhất của MaNL đó
    Mình đánh lệnh sau:
    Gia:IIf(Isnull(Dlookup("GiaNL!Giatien";"GiaNL";"GiaNL!MaNL='" & PhieuNL!MaNL & "' And Ngaygia=#" & PhieuNL!Ngaylap & "#"));Dlookup("GiaNL!Giatien";"GiaNL";"GiaNL!MaNL='" & PhieuNL!MaNL & "' And Ngaygia<#" & PhieuNL!Ngaylap & "#");0)

    Nhưng kết quả trả về lại không đúng
    Bạn nào biết giúp mình với
    Trân trọng cám ơn nhiều!
  • RE: Query tìm giá

    thucgia > 21-10-15, 12:12 PM

    Theo ý mình, đơn giản nhất là  bạn nên lọc ra một query "Bảng giá mới nhất" dựa vào hàm max(ngay).

    Query của bạn đây :

    Mã:
    SELECT
    gm.hang_id,
    gm.ngay_moi_nhat,
    tpl.gia as gia_moi
    FROM
    (

    SELECT Max(gia.ngay) AS ngay_moi_nhat, gia.hang_id, hang_id & Day(ngay_moi_nhat) & Month(ngay_moi_nhat) & Year(ngay_moi_nhat) AS ma
    FROM gia
    GROUP BY gia.hang_id

    )
    as gm
    LEFT JOIN
    (

    SELECT gia.gia, hang_id & day(ngay) & month(ngay) & year(ngay) AS ma
    FROM gia

    )
    as tpl
    ON gm.ma = tpl.ma


    kết quả đây :


    Mã:
    hang_id ngay_moi_nhat gia_moi
    a 20/10/15 1.5
    b 21/10/15 2.5
    c 19/10/15 3