-Liệt kê tháng, tên gạo mà có tổng số kg bán nhiều nhất trong mỗi tháng.
Trả lời 4 (Chưa phải là tối ưu nha):
[highlight=vb]
SELECT B.THANG, C.MAGAO, B.MAXTONGSOKG
FROM
(
SELECT A.THANG, Max(A.TONGSOKG) AS MAXTONGSOKG
FROM
(
SELECT MONTH(HOADON.NGAYBAN) AS THANG,CTHD.MAGAO, SUM(CTHD.SOKG) AS TONGSOKG
FROM HOADON INNER JOIN CTHD ON HOADON.SOHD=CTHD.SOHD
GROUP BY MONTH(HOADON.NGAYBAN),CTHD.MAGAO
) AS A
GROUP BY A.THANG
) AS B
INNER JOIN
(
SELECT MONTH(HOADON.NGAYBAN) AS THANG,CTHD.MAGAO, SUM(CTHD.SOKG) AS TONGSOKG
FROM HOADON INNER JOIN CTHD ON HOADON.SOHD=CTHD.SOHD
GROUP BY MONTH(HOADON.NGAYBAN),CTHD.MAGAO
) AS C
ON B.THANG=C.THANG AND B.MAXTONGSOKG = C.TONGSOKG
[/highlight]---------------------------------------------------------------------------------------------------------------
Có điều câu thứ 2 (liệt kê gạo cùng đặc điểm và giá bán), em vẫn ko hiểu sao mà trong chế độ design view lại có thêm 1 cái table (a).Em vẫn chưa hiểu tại sao lại xuất hiện cái table ý, mà nếu ko có table (a) ý thì có sao ko? Có lẽ bác cadafi thiết kế trong chế độ SQL view, thế nếu mình chỉ làm trong cái chế độ design view thì câu số 2 fải làm như thế nào nhỉ? Làm sao để xuất hiện cái table (a) đó??
Đây là câu query lồng, table a mà bạn thấy chẳng qua là 1 bảng query chứ không có thực. Muốn làm trong cái chế độ design view thì câu số hai phải tách ra làm 2 câu query
Thay vì:
[highlight=vb]
SELECT LOAIGAO.MAGAO, LOAIGAO.TENGAO, LOAIGAO.DACDIEM, LOAIGAO.GIABAN
FROM LOAIGAO
INNER JOIN
(
SELECT LOAIGAO.DACDIEM, LOAIGAO.GIABAN, Count(LOAIGAO.DACDIEM) AS myRef1,
Count(LOAIGAO.GIABAN) AS myref2
FROM LOAIGAO
GROUP BY LOAIGAO.DACDIEM, LOAIGAO.GIABAN
HAVING (((Count(LOAIGAO.DACDIEM))>1) AND ((Count(LOAIGAO.GIABAN))>1))
) AS A
ON LOAIGAO.DACDIEM = A.DACDIEM and LOAIGAO.GIABAN = A.GIABAN
[/highlight]
Thì thay bằng:
Qry01:
[highlight=vb]
SELECT LOAIGAO.DACDIEM, LOAIGAO.GIABAN, Count(LOAIGAO.DACDIEM) AS myRef1, Count(LOAIGAO.GIABAN) AS myref2
FROM LOAIGAO
GROUP BY LOAIGAO.DACDIEM, LOAIGAO.GIABAN
HAVING (((Count(LOAIGAO.DACDIEM))>1) AND ((Count(LOAIGAO.GIABAN))>1))
[/highlight]
và
Qry02:
[highlight=vb]
SELECT LOAIGAO.MAGAO, LOAIGAO.TENGAO, LOAIGAO.DACDIEM, LOAIGAO.GIABAN
FROM LOAIGAO INNER JOIN Qry01 ON LOAIGAO.DACDIEM = Qry01.DACDIEM AND LOAIGAO.GIABAN = Qry01.GIABAN
[/highlight]Tôi thắc mắc là với khả năng xử lý câu 3 của bạn như vậy mà lại hỏi những câu như thế này!? Bạn muốn hỏi thực sự hay muốn đánh đố người khác vậy!?