2011-10-03 49 views
0

有人可以帮我将这些表格加入到表格中,并提取PRODUCT_ID,PRODUCT_CODE,PRODUCT_NAME和LAST_ORDER_DATE,因为对于仅使用SQL的MYSQL没有太多经验。使用Max命令加入1或2个表格

我不确定我是否需要第二张表,或者只能在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 

预先感谢。

罗伊

+1

什么你说*的意思是“没有与SQL,仅在MySQL多少经验” *? * MySQL *是产品的名称,* SQL *是在MySQL中也使用的语言的名称(也就是特定的SQL风格,但通常仍称为“SQL”)。你是否真的有意要说'SQL Server'(尽管人们会混淆这两个),这与SQL'不一样吗? –

回答

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