2014-07-17 1 views
0

내가 3 개 테이블에서 레코드를 얻을 :UNION - BY ORDER, 정렬

(
    SELECT 
     f.id AS id, 
     'Faktura VAT' as type, 
     DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue 
    FROM Invoice_vat f 
) 
UNION ALL 
(
    SELECT 
     f.id AS id, 
     'Faktura korygująca' as type, 
     DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue 
    FROM Invoice_fks f 
) 
UNION ALL 
(
    SELECT 
     f.id AS id, 
     'Faktura proforma' as type, 
     DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue 
    FROM Invoice_pro f 
) 
ORDER BY date_issue DESC 

내가 모든 필드 "date_issue"이것을 정렬하려고하지만,이 행위에서 난 것이 아니니 ... 어떤 아이디어는 무엇입니까?

답변

3

"date_issue"로 정렬 중입니다. 문제는 월간 날짜가 가장 오래된 비열한 형식입니다. 따라서 목록은 1 월 1 일부터 시작될 수 있지만 2 월 1 일이 1 월 2 일 전부터 나옵니다. 날짜에 대한 ISO 표준 형식 인 표준 형식 YYYY-MM-DD를 사용하여이 문제를 해결할 것입니다.

또한 쉽게 출력에 원래 열을 포함하여이 문제를 해결할 수 있습니다 : 당신이 할 경우

(
    SELECT 
     f.id AS id, 
     'Faktura VAT' as type, 
     DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue, 
     f.date_issue as orig_date_issue 
    FROM Invoice_vat f 
) 
UNION ALL 
(
    SELECT 
     f.id AS id, 
     'Faktura korygująca' as type, 
     DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue, 
     f.date_issue as orig_date_issue 
    FROM Invoice_fks f 
) 
UNION ALL 
(
    SELECT 
     f.id AS id, 
     'Faktura proforma' as type, 
     DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue, 
     f.date_issue as orig_date_issue 
    FROM Invoice_pro f 
) 
ORDER BY orig_date_issue DESC; 

당신은 하위 쿼리를 사용할 수 없습니다 실제로 필드를 선택합니다.

1

date_issue의 수정 된 버전으로 정렬하므로 날짜가 아닌 문자열로 정렬됩니다.

오히려 각 Union에 대한보다 날짜 마지막에 대한 귀하의 서식을하고 시도 :

Select ID, 
     Type, 
     DATE_FORMAT(date_issue, '%d.%m.%Y') As Date_Issue 
From 
(
    (
     SELECT 
      f.id AS id, 
      'Faktura VAT' as type, 
      f.date_issue 
     FROM Invoice_vat f 
    ) 
    UNION ALL 
    (
     SELECT 
      f.id AS id, 
      'Faktura korygująca' as type, 
      f.date_issue 
     FROM Invoice_fks f 
    ) 
    UNION ALL 
    (
     SELECT 
      f.id AS id, 
      'Faktura proforma' as type, 
      f.date_issue 
     FROM Invoice_pro f 
    ) 
) A 
ORDER BY A.date_issue DESC