2017-11-08 2 views
1

나는 아래와 같은 선택 문이 :SQL select 문에 범주 이름을 결합하려면 어떻게 선택합니까?

SELECT 
    sales.Added_by as "Added_By", 
    CONCAT(HOUR(sales.Sales_Date), ':00-', HOUR(sales.Sales_Date)+2, ':00') AS Hours, 
    COUNT(sales.Sales_ID) AS `Sales_ID`, 
    sum(sales.Quantity) as "Quantity", 
    sum(sales.Tax_Amount) as "Tax_Amount", 
    sum(sales.Discount_Amount) as "Discount_Amount", 
    sum(sales.Total_Price) as "Total_Price", 
    sum(sales.Cash) as "Cash", 
    sum(sales.Change) as "Change", 
    MAX(sales_detail.Category_ID) as "Category_ID", 
    MAX(sales_detail.Stock_Name) as "Stock_Name", 
    categories.Category_Name 
FROM sales 
    inner join sales_detail on sales.Sales_Number=sales_detail.Sales_Number 
    inner join categories on categories.Category_ID = sales_detail.Category_ID 
GROUP BY HOUR(sales.Sales_Date) asc, sales.Added_By asc 

내 질문은 내가

MAX(sales_detail.Category_ID) as "Category_ID" 

열에서 카테고리의 이름을 추가하는 방법입니까? 출력은 1 - Category A과 같아야합니다.

귀하의 도움에 감사드립니다.

답변

0

SUBSTRING_INDEX(
    GROUP_CONCAT(categories.name ORDER BY categories.Category_ID DESC) 
,',',1) "Category_Name", 

그러나 내림차순으로 분류 ID로 주문시 각 그룹에 대한 카테고리의 쉼표로 구분 된 목록을 한 후 첫 번째 값을 선택하는 SUBSTRING_INDEX 문자열 기능을 사용하기 MySQL의 특정 사용 GROUP_CONCAT위한 hackish 방법 당신의 카테고리 이름은 일 항상 경우 내가

CONCAT(MAX(sales_detail.Category_ID), 
     '-', 
     SUBSTRING_INDEX(
      GROUP_CONCAT(categories.name ORDER BY categories.Category_ID DESC) 
     ,',',1) 
) AS "Category" 
+0

안녕 칼리드는,이 select 문이 올 것입니다. 하지만 _id 열에 함께 어떻게 추가 할 수 있습니까? –

+0

@ Test87 당신은 id-categoryname을 의미합니까? 이 12- 식품과 같은 것? –

+0

@Khalid, 네, 맞습니다. –

0

함께 카테고리 _id 컬럼에에 추가하는 방법 전자 같은 그룹화 된 모든 행에 대해, 당신은 평소와 같이 열 이름을 GROUP BY 절에 categories.Category_Name를 추가하고, CONCAT 수 있습니다

SELECT 
    sales.Added_by as "Added_By", 
    CONCAT(HOUR(sales.Sales_Date), ':00-', HOUR(sales.Sales_Date)+2, ':00') AS Hours, 
    COUNT(sales.Sales_ID) AS `Sales_ID`, 
    sum(sales.Quantity) as "Quantity", 
    sum(sales.Tax_Amount) as "Tax_Amount", 
    sum(sales.Discount_Amount) as "Discount_Amount", 
    sum(sales.Total_Price) as "Total_Price", 
    sum(sales.Cash) as "Cash", 
    sum(sales.Change) as "Change", 
    MAX(sales_detail.Category_ID) || ' - ' || categories.Category_Name as "Category_ID", 
    MAX(sales_detail.Stock_Name) as "Stock_Name", 
    categories.Category_Name 
FROM sales 
    inner join sales_detail on sales.Sales_Number=sales_detail.Sales_Number 
    inner join categories on categories.Category_ID = sales_detail.Category_ID 
GROUP BY HOUR(sales.Sales_Date) asc, sales.Added_By asc, categories.Category_Name 
+0

안녕하세요 macmoonshine, 카테고리가 다를 수 있습니다. –

관련 문제