2016-04-20 4 views
-1

Ich habe eine product Tabelle und jedes Produkt könnte delivered, idle, shipping, preparing sein.Was gibt eine Abfrage mit mehreren Zahlen in SQL zurück?

Ich mag mit den Grafen von Produkten für jeden Staat eine Liste anzuzeigen, und ich kann sehen, wie für die hier abfragen:

How to get multiple counts with one SQL query?

Doch was bedeuten diese Abfrage Rückkehr, und wie zu tun Ich gebe den Rückgabewert zu sagen wir 4 Ganzzahlen, genannt deliveredCount, idleCount, shippingCount, preparingCount?

PS: Für das Protokoll, ich bin mit SQLite mit OrmLite in Android mit JAVA

EDIT: In dieser Frage SO Menschen erklären, was Abfrage zu tun, wenn Sie mehrere Zählungen erhalten möchten, aber sie nicht sagen uns, was diese Abfrage zurückgibt und in welchem ​​Format. Zum Beispiel:

SELECT a.distributor_id, 
    (SELECT COUNT(*) FROM myTable WHERE level='personal' and distributor_id = a.distributor_id) as PersonalCount, 
    (SELECT COUNT(*) FROM myTable WHERE level='exec' and distributor_id = a.distributor_id) as ExecCount, 
    (SELECT COUNT(*) FROM myTable WHERE distributor_id = a.distributor_id) as TotalCount 
FROM myTable a ; 

Was die Rückkehr Typ dieser ist, und was ist das Format?

PS2: Jemand war wirklich schnell meine Frage zu verweigern, weil es genügend Informationen fehlte. Dann bearbeitet ich es, aber die downvote immer noch :(

+0

Welche Abfrage meinen Sie? Sie verknüpfen nur eine Stapelüberlauffrage mit zwei Abfragen und mehreren Antworten ... –

+0

müssen Sie einschließen, möchten Sie ausprobiert haben. – kasim

+0

Bearbeitete Frage mit mehr detaisl –

Antwort

1

Fest sicher zu sagen, aber klingt wie Sie brauchen eine Version der Top-Antwort in der Verbindung verwenden Sie zur Verfügung gestellt haben

So etwas wie;.

SELECT ProductID, 
    COUNT(*) AS Total, 
    SUM(CASE WHEN pStatus = 'delivered' THEN 1 ELSE 0 END) DeliveredCount, 
    SUM(CASE WHEN pStatus = 'idle' THEN 1 ELSE 0 END) IdleCount, 
    SUM(CASE WHEN pStatus = 'shipping' THEN 1 ELSE 0 END) ShippingCount, 
    SUM(CASE WHEN pStatus = 'preparing' THEN 1 ELSE 0 END) PreparingCount 
FROM ProductTable 
GROUP BY ProductID 

Diese w krank zurück etwas wie;

ProductID | DeliveredCount | IdleCount | ... 
1   | 250   | 3250  | ... 
+0

Meine Frage ist, was diese Abfrage zurückgibt und in welchem ​​Format? –

+0

Siehe meine Bearbeitung oben bitte. – William

+0

Danke. also wie extrahiere ich die Werte und ordne sie ganzen Zahlen in Java zu (oder vielleicht sollte ich eine andere Frage dazu stellen) –

1
select 
    concat(state, "Count"), 
    count(*) 
from product 
group by state 

Welche 4 Zeilen zurückgeben würde (vorausgesetzt, vier eindeutige Werte des Staates):

fooCount | 15 
etc 
+0

Meine Frage ist, was diese Abfrage zurückgibt und in welchem ​​Format? –

+0

Bearbeitet, um einen Beispielbericht anzuzeigen. Es gibt eine Tabelle mit zwei Werten zurück. –

+0

Danke. Also wie extrahiere ich die Werte und ordne sie ganzen Zahlen in Java zu (oder vielleicht sollte ich eine andere Frage dazu stellen) –

1

Sie können dies versuchen.

SELECT 
SUM(CASE WHEN Prod = 'delivered' THEN 1 ELSE 0 END) as deliveredCount, 
SUM(CASE WHEN Prod = 'idle' THEN 1 ELSE 0 END) as idleCount, 
SUM(CASE WHEN Prod = 'shipping' THEN 1 ELSE 0 END) as shippingCount, 
SUM(CASE WHEN Prod = 'preparing' THEN 1 ELSE 0 END) as preparingCount 
FROM Product 
Verwandte Themen