使用Max Command加入1或2个表

时间:2011-10-03 08:41:47

标签: sql inner-join max

有人可以帮助我将这些表格加入表格并提取PRODUCT_ID,PRODUCT_CODE,PRODUCT_NAME和LAST_ORDER_DATE,因为他们对SQL只有MYSQL没有多少经验。

我不确定我是否需要第二个表,或者是否可以在ODBC_ORDER_LINE_ALL中使用MAX。

表1

Name: ODBC_ORDER_LINE_ALL

ORDER_LINE_ID

ORDER_LINE_DATE

ORDER_LINE_PRODUCT_ID

ORDER_LINE_PRODUCT_CODE

ORDER_LINE_PRODUCT_NAME

表2

Name: ODBC_PRODUCT_ALL

PRODUCT_ID

PRODUCT_CODE

PRODUCT_NAME

提前致谢。

罗伊

2 个答案:

答案 0 :(得分:0)

您是否尝试过简单分组:

SELECT ORDER_LINE_PRODUCT_ID,ORDER_LINE_PRODUCT_CODE,ORDER_LINE_PRODUCT_NAME, MAX(ORDER_LINE_DATE)
FROM ODBC_ORDER_LINE_ALL
GROUP BY ORDER_LINE_PRODUCT_ID,ORDER_LINE_PRODUCT_CODE,ORDER_LINE_PRODUCT_NAME

答案 1 :(得分:0)

您不需要第二张表。

使用您当前的实现,查询将是

SELECT ORDER_LINE_PRODUCT_ID, 
       ORDER_LINE_PRODUCT_CODE, 
       ORDER_LINE_PRODUCT_NAME, 
       MAX(ORDER_LINE_DATE)
FROM ODBC_ORDER_LINE_ALL
GROUP BY ORDER_LINE_PRODUCT_ID

但是,您需要规范化您的第一张桌子。 假设您的订单行表中的产品ID,产品代码和产品名称引用了产品表中的相同值,
(并且单个产品ID仅对应于一个产品代码和名称),
Table 1: ODBC_ORDER_LINE_ALL的表格结构应为

ORDER_LINE_ID
ORDER_LINE_DATE
Foreign key (ORDER_LINE_PRODUCT_ID) references ODBC_PRODUCT_ALL(PRODUCT_ID)

在这种情况下,查询将是

SELECT ORDER_LINE_PRODUCT_ID, PRODUCT_CODE, PRODUCT_NAME,  MAX(ORDER_LINE_DATE), 
FROM ODBC_ORDER_LINE_ALL 
     JOIN ODBC_PRODUCT_ALL
     ON  ORDER_LINE_PRODUCT_ID = PRODUCT_ID
GROUP BY ORDER_LINE_PRODUCT_ID