如何订购预订表

时间:2015-12-21 15:00:28

标签: javascript google-chrome web-sql

当我使用“union select”查询数据库时:

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;

我按顺序提取此数据:

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

我该怎么办?

2 个答案:

答案 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未显示在列列表中,因此我不确定您希望使用哪个字段进行排序。您可以使用任何列名称按顺序排序 - &#34; A.portata&#34;。

此外,按desc_art分组的第二个SQL似乎不符合ANSI标准,通常当您按所选列列表中的所有非聚合列进行分组时,应该是您的组的一部分。您可能需要查看此内容并检查您是否获得了正确的结果。

答案 1 :(得分:0)

我需要使用其变体获得主要产品,然后重新组合其他产品,并总结其数量。

然后我想按字母顺序排序。

实施例

如果我有这个:

1 Spaghetti

1 Spaghetti
+ pomodoro
+cipolle 

5 Caffè

6 Coca cola

这是错的。

我需要得到:

5 Caffè
6 Coca cola

然后Spaghetti及其变体,与其他同名产品分开(此功能已经有效):

1 Spaghetti

1 Spaghetti
+pomodoro
+cipolle