当我使用“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
我该怎么办?
答案 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