2017-03-02 8 views
0

In einer Datenbank habe ich Registrierungen vof Studenten für ein Ereignis. Es sieht wie folgt aus:Wie zwei Zeilen der SQL-Abfrage summieren

id, firstname, surname, gender, email, studydegree, study, workshop1, workshop2, participate_speeddating, ss_companies, date of birth, date of registration 

zum Beispiel

6574, John, Doe, Male, [email protected], Phd, ComputerScience, None, None, no, None, 01-01-1990, 01-01-2017 

Ich habe folgendes der Abfrage:

<?php query_to_html('Studies', 'SELECT study, COUNT(*) FROM registrants GROUP BY study'); ?> 

wo query_to_html die Abfrage in eine HTML-Tabelle umwandelt. Das gibt mir folgendes:

study , COUNT(*) 
Mathematics, 90 
Physics, 71 
Astronomy, 5 
Biology, 25 
Biomedical Sciences, 25 
... etc 

Ich möchte einige der Studien zusammenzufassen, basierend auf Studienvereinigung (Array), zB Gruppe 1) Mathematik, Astronomie, Physik und Informatik und Gruppe 2) Biologie und Biomedizin. Wie folgt:

wobei 166 und 55 eine Summe aus einigen Zeilen ist, die dem Array study_association entsprechen.

Wie mache ich das?

Danke!

+2

Fügen Sie einige Beispieltabellendaten und das erwartete Ergebnis hinzu - alles als formatierter Text. – jarlh

Antwort

0

Sie können SUM (IF()) verwenden, um nur bestimmte Zeilen zu zählen. Ich nehme an, Ihre Spalte ist "Gruppe":

SELECT 
    study, 
    COUNT(*) AS sum, 
    SUM(IF(`group` IN ('Mathematics', 'Astronomy', 'Physics', 'Computer Science'), 1, 0) AS group1, 
    SUM(IF(`group` IN ('Biology', 'Biomedical'), 1, 0) AS group2 
FROM registrants 
GROUP BY study 

Dies zählt Registranten, die in einer der Gruppe in bestimmten Array sind.

Verwandte Themen