2015-12-21 170 views
1

當我查詢這種「聯合選擇」數據庫:如何訂購預購表

select stampata_sn,numero_conto,dest_stampa,portata,categoria,prog_inser,nodo,desc_art,prezzo_un,quantita from comanda where contiene_variante='1' and ntav_comanda='1' and posizione='CONTO' and stato_record='ATTIVO' and numero_conto = '1' 
union all 
select stampata_sn,numero_conto,dest_stampa,portata,categoria,prog_inser,nodo,desc_art,prezzo_un,sum(quantita) as quantita from comanda where (contiene_variante !='1' or contiene_variante is null) and length(nodo)=3 and ntav_comanda='1' and posizione='CONTO' and stato_record='ATTIVO' and numero_conto = '1' group by desc_art 
union all 
select stampata_sn,numero_conto,dest_stampa,portata,categoria,prog_inser,nodo,desc_art,prezzo_un,quantita from comanda where length(nodo)=7 and ntav_comanda='1' and posizione='CONTO' and stato_record='ATTIVO' and numero_conto = '1' order by nodo asc; 

我提取這些DATAS,按照這個順序:

PROGRESSIVO NODO PRODOTTO   QUANTITA 
0   000  SAN PELLEGRINO  1 
1   001  MINERALWASSER 0.2 l 1 
2   002  MINERALWASSER 0.4 l 1 
3   003  COCA COLA 0.2 l  3 
4   004  COCA COLA 0.4 l  1 
5   005  COLA LIGHT 0.2 l 5 
6   006  COLA LIGHT 0.4 l 3 
7   007  APFELSAFT 0.4 l  1 
12   007  012 +SCHWARZWALD 1 
13   007  013 -ERDBEEREN  1 
8   008  APFELSAFT 0.2 l  2 
10   010  SPRITE 0.4 l  1 
11   011  SPRITE 0.2 l  1 

的順序是正確的因爲變體鏈接到產品,但我想按照字母順序看到它們,如下所示:

PROGRESSIVO NODO  PRODOTTO   QUANTITA 
11   008   APFELSAFT 0.2 I  2 
7   007   APFELSAFT 0.4 I  1 
8   007 012  + SCHWARZWALD  1 
10   007 013  - ERDBEEREN   1 
3   003   COCA COCA 0.2 I  3 
4   004   COCA COLA 0.4 I  1 
5   005   COLA LIGHT 0.2 l 5 
6   006   COLA LIGHT 0.4 l 3 
1   001   MINERALWASSER 0.2 l 1 
2   002   MINERALWASSER 0.4 l 1 
0   000   SAN PELLEGRINO  1 
12   011   SPRITE 0.2 l  1 
13   010   SPRITE 0.4 l  1 

我該怎麼辦?

+0

你有什麼至今? – MinusFour

+0

我得到的第一個結果我發現。 –

回答

0

你可以嘗試和包裝您的SQL在外部SQL像下面

select A.stampata_sn 
     ,A.numero_conto 
     ,A.dest_stampa 
     ,A.portata 
     ,A.categoria 
     ,A.prog_inser 
     ,A.nodo 
     ,A.desc_art 
     ,A.prezzo_un 
     ,A.quantita 
    FROM 
(
select stampata_sn 
     ,numero_conto 
     ,dest_stampa 
     ,portata 
     ,categoria 
     ,prog_inser 
     ,nodo 
     ,desc_art 
     ,prezzo_un 
     ,quantita 
    from comanda 
where contiene_variante='1' 
    and ntav_comanda='1' 
    and posizione='CONTO' 
    and stato_record='ATTIVO' 
    and numero_conto = '1' 
union all 
select stampata_sn 
     ,numero_conto 
     ,dest_stampa 
     ,portata 
     ,categoria 
     ,prog_inser 
     ,nodo 
     ,desc_art 
     ,prezzo_un 
     ,sum(quantita) as quantita 
    from comanda 
where (contiene_variante !='1' or contiene_variante is null) 
    and length(nodo)=3 
    and ntav_comanda='1' 
    and posizione='CONTO' 
    and stato_record='ATTIVO' 
    and numero_conto = '1' group by desc_art 
union all 
select stampata_sn 
     ,numero_conto 
     ,dest_stampa 
     ,portata 
     ,categoria 
     ,prog_inser 
     ,nodo 
     ,desc_art 
     ,prezzo_un 
     ,quantita 
    from comanda 
where length(nodo)=7 
    and ntav_comanda='1' 
    and posizione='CONTO' 
    and stato_record='ATTIVO' 
    and numero_conto = '1' 
) A 
order by <Field to order by here> asc; 

我不確定什麼領域你想使用,因爲列標題PRODOTTO下令在列不顯示名單。你可以使用任何列名舉例命令 - 「A.portata」。

而且你的第二SQL通過desc_art組似乎並不兼容ANSI,通常當你按選定列列表中的所有非聚合列應該是你按的一部分。您可能需要查看此內容並檢查您是否獲得了正確的結果。

0

我需要得到主要產品有它的變體,然後重新組合等產品,並總結它們的數量。

然後我想他們的字母順序排列。

例子。

如果我有這樣的:

1 Spaghetti 

1 Spaghetti 
+ pomodoro 
+cipolle 

5 Caffè 

6 Coca cola 

這是錯誤的。

我需要得到:

5 Caffè 
6 Coca cola 

則意粉及其變種,與其他產品使用相同的名稱分割(此功能已經工作):

1 Spaghetti 

1 Spaghetti 
+pomodoro 
+cipolle