2014-09-23 4 views
0

У меня есть две таблицы Те следующиеСортировать по дате в SQL

Название таблицы: stockIn

+----+-------------+------------+------------+   
| Id | date  | Itemname | stockInqty |  
+====+=============+============+============+ 
| 1 | 12/12/2014 | testitem | 12  | 
| 2 | 14/12/2014 | testitem11 | 20  | 
+----+-------------+------------+------------+ 

Название таблицы: нет на складе

+----+------------+-------------+-------------+ 
| Id | date  | Itemname | stockOutqty | 
+====+============+=============+=============+  
| 1 | 12/12/2014 | testitem | 7   | 
| 2 | 13/12/2014 | testitem11 | 15   | 
+----+------------+-------------+-------------+ 

мне нужен комбинированный результат от контрольной записи между двумя датами порядка

+------------+-----------+-------------+-------------+ 
| date  | itemname | stockInqty | stockOutqty | 
+============+===========+=============+=============+  
| 12/12/2014 | testitem | 12   | 7   | 
| 13/12/2014 | testitem | NIL  | 15  | 
| 14/12/2014 | testitem | 20   | NIL  | 
+------------+-----------+-------------+-------------+ 

Я получил запрос, как этот

SELECT t1.`date` 
    , t1.itemname 
    , t1.stockInqty AS stockInqty 
    , t2.stockInqty AS stockOutqty 
FROM tbl1 t1 LEFT JOIN tbl2 t2 ON t1.`date` = t2.`date` 
           AND t1.itemname = t2.itemname 
UNION 

SELECT t2.`date` 
    , t2.itemname 
    , t1.stockInqty AS stockInqty 
    , t2.stockInqty AS stockOutqty 
FROM tbl1 t1 RIGHT JOIN tbl2 t2 ON t1.`date` = t2.`date` 
           AND t1.itemname = t2.itemname 

Результат запроса будет как этот

+-------------+------------+------------+-------------+ 
|date   | itemname | stockInqty | stockOutqty |  
+=============+============+============+=============+  
| 12/12/2014 | testitem |  12 | 7   | 
| 14/12/2014 | testitem |  20 | NIL  |  
| 13/12/2014 | testitem |  NIL | 15  | 
+-------------+------------+------------+-------------+ 

Результат упорядочен на основе кулачные данных таблицы.

Мне нужен результат, который должен быть заказан на основе даты (т.е. первая запись должна быть на 12/12/2014, вторая запись на 13/14/2014 третья на 14/12/2014).

Заранее спасибо.

+1

Добавить в последнем порядке по дате возрастанию –

+0

У вас есть две колонки данных, который нужно отсортировать в одном одиночный вывод - ** невозможно, как если бы вы применили сортировку по столбцу 1 **, данные будут сортироваться на этой основе - 'NIL, 12/12, 13,12', поэтому данные 14/12 будут в первой строке. – Murtaza

+0

спасибо за это редактирование Ullas, вся цель вопроса потерялась ... –

ответ

0
select * from 
(
SELECT t1.date as sdate 
    , t1.itemname 
    , t1.stockInqty AS stockInqty 
    , t2.stockInqty AS stockOutqty 
FROM tbl1 t1 LEFT JOIN tbl2 t2 ON t1.`date` = t2.`date` 
           AND t1.itemname = t2.itemname 
UNION 

SELECT t2.date as sdate 
    , t2.itemname 
    , t1.stockInqty AS stockInqty 
    , t2.stockInqty AS stockOutqty 
FROM tbl1 t1 RIGHT JOIN tbl2 t2 ON t1.`date` = t2.`date` 
           AND t1.itemname = t2.itemname 
) t 
order by sdate 
+0

См. Изменения –

0

Попробуйте это с заказом по дате

SELECT t1.`date` 
     , t1.itemname 
     , t1.stockInqty AS stockInqty 
     , t2.stockInqty AS stockOutqty 
    FROM tbl1 t1 LEFT JOIN tbl2 t2 ON t1.`date` = t2.`date` 
            AND t1.itemname = t2.itemname 
    UNION 

    SELECT t2.`date` 
     , t2.itemname 
     , t1.stockInqty AS stockInqty 
     , t2.stockInqty AS stockOutqty 
    FROM tbl1 t1 RIGHT JOIN tbl2 t2 ON t1.`date` = t2.`date` 
            AND t1.itemname = t2.itemname order by date 
+0

См. Правки –

0

использовать этот код:

select date,itemname,stockInqty,stockOutqty from(
SELECT t1.date 
, t1.itemname 
, t1.stockInqty AS stockInqty 
, t2.stockInqty AS stockOutqty 
FROM tbl1 t1 LEFT JOIN tbl2 t2 ON t1.date = t2.date 
          AND t1.itemname = t2.itemname 
UNION 

SELECT t2.date 
, t2.itemname 
, t1.stockInqty AS stockInqty 
, t2.stockInqty AS stockOutqty 
FROM tbl1 t1 RIGHT JOIN tbl2 t2 ON t1.date = t2.date 
          AND t1.itemname = t2.itemname) 
order by date 
Смежные вопросы