2017-08-11 4 views
-1

Ich habe versucht, aber es scheint, dass ich etwas vermisse. Ich möchte zwei Ergebnisse von zwei Tabellen durch ein gemeinsames Feld kombinieren.Mysql kombinieren zwei Ergebnisse und gruppieren sie nach Feld

Ich möchte Ergebnisse von diesen zwei Abfragen nach Kundenfeld gruppieren.

SELECT errors.customer, count(errors.customer) as err_count,severity from errors group by customer,severity; 

SELECT customer,sum(size) as Tot_size,count(customer) as Policy_count from backup group by customer; 

Ich habe dies versucht.

SELECT errors.customer, count(errors.customer) as err_count,severity from errors group by customer,severity union all SELECT customer,count(customer) as Policy_count ,sum(size) as Tot_size from backup group by customer; 

Aber aus irgendeinem Grund fehlen einige Spalten.

+0

Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be- a-sehr-einfach-sql-Abfrage – Strawberry

+0

Ich glaube nicht, eine "UNION" ist, was Sie brauchen ... –

Antwort

0

Sie sollten die Anforderungen für union folgen:

Der UNION-Operator verwendet wird, um das Ergebnis-Satz von zwei oder mehr SELECT-Anweisungen zu kombinieren.

  • Jede SELECT-Anweisung innerhalb UNION muß die gleiche Anzahl von Spalten
  • Die Spalten in jeder SELECT-Anweisung Ähnliche Datentypen
  • Die Spalten haben müssen müssen auch in der gleichen Reihenfolge seine
hat auch

Offenbar sind die obigen Elemente in Ihrer Abfrage nicht zufrieden.

0

versuchen, etwas wie folgt aus:

SELECT q1.customer, Tot_size, Policy_count, err_count, severity 
FROM (SELECT customer, SUM(size) AS Tot_size, COUNT(customer) AS Policy_count 
     FROM backup GROUP BY customer) q1 
LEFT JOIN (SELECT customer, COUNT(customer) AS err_count, severity 
      FROM errors GROUP BY customer, severity) q2 ON q1.costumer = q2.costumer 
+0

Es hat funktioniert, Danke – vladimir999

0

Ihre erste Abfrage enthält drei Spalten und Ihre zweite enthält zwei Spalten. Um den UNION-Operator zu verwenden, müssen Ihre zwei Abfragen die gleiche Anzahl von Spalten haben und die Spalten sollten kompatibel sein.

In Ihrem Fall fehlt der zweiten Abfrage eine dritte Spalte. Wenn es keine entsprechende Spalte verwenden Sie einen Standard wie

einstellen „‚n/a‘als Schweregrad“ wenn es Text sein soll oder „0 als Schweregrad“ für einen numerischen Wert.

Prost Martin

Verwandte Themen