2016-05-28 8 views
1

ich zur Zeit das tue:Wie kombiniere ich diese MySQL-Anweisungen

SELECT SS.service_name , SS.id, SH.shortcode FROM smsc_app_db.service SS 
INNER JOIN shortcode SH ON SS.confirmation_shortcode = SH.id; 

    SELECT count(service_id) FROM smsc_app_db.service_status 
where smsc_app_db.service_status.service_id = ?; 

Nach der ersten Auswahl ausgeführt wird, ich das Ergebnis in Java zu bekommen, dann für jede Zeile des ResultSet, verwende ich die SS.ID Wert zu zählen Sie die Anzahl der Abonnenten für diesen Service in der Tabelle service_status (mit der zweiten Anweisung)

Aber ich möchte die 2 Aussagen in einem zu kombinieren.

Ist es möglich, die select count(service_id)

eine Spalte in der ersten select-Anweisung zu machen?

z.B. wenn das Ergebnis der

select count(service_id).... in subscriber_base

SELECT SS.service_name , SS.id, SH.shortcode, subscriber_base FROM 
smsc_app_db.service SS INNER JOIN shortcode SH ON SS.confirmation_shortcode = SH.id; 

Antwort

2

join die service_status Tabelle auf die vorhandene Abfrage und Aggregat gespeichert wird, um die Zählungen zu erhalten.

SELECT SS.service_name, SS.id, SH.shortcode, count(*) subscriber_base 
FROM smsc_app_db.service SS 
INNER JOIN shortcode SH ON SS.confirmation_shortcode = SH.id 
INNER JOIN smsc_app_db.service_status sstat ON sstat.service_id = SS.id 
GROUP BY SS.service_name, SS.id, SH.shortcode 
+0

Große Antwort. Bitte ändern Sie die ON sstat.service_id = ss.id auf ON sstat.service_id = SS.id, so kann ich dies als die richtige Antwort durch markieren !!! – gbenroscience

+0

Ich glaube nicht, dass das einen Unterschied machen würde. –

+0

Komm, seine weil ich es getestet und es funktioniert, deshalb habe ich Sie gefragt, es zu ändern. Ich benutze MariaDb auf CentOS und vertraue mir, es tut es. – gbenroscience