2016-08-01 21 views
-2

Ich möchte eine SQL-Abfrage schreiben, die die Gesamtzahl der Tutoren zurückgeben sollte, die ein bestimmtes Thema in einer bestimmten Stadt unterrichten.SQL-Abfrage gibt kein genaues Ergebnis

Das ist meine Abfrage

SELECT COUNT(*) 
FROM `tutor_main` tm 
    JOIN `tutor_subjects` ts ON tm.`tutor_id` = ts.`tutor_id` 
    JOIN `sub_subjects` ss ON ss.`subs_id` = ts.`subs_id` 
    JOIN `town` tt ON tm.`town_id` = tt.`town_id` 
    JOIN `subject_level` sl ON sl.`sub_level_id` = ts.`sub_level_id` 
WHERE ts.`subs_id` = 1 
AND tm.`town_id` = 1 

Hier tutor_main als Haupttabelle, die town_id als Fremdschlüssel speichert. sub_subjects als Hauptfächer Tabelle und subject_level Tabelle speichert Thema Ebenen. In ähnlicher Weise speichert tutor_subjects Tabelle die Schlüssel von tutor_id, subs_id und sub_level_id.

Dies ist der Screenshot von tutor_subjects Tabelle:

enter image description here

Beachten Sie, dass die town_id für alle Tutoren ist 1.

Nun, wenn ich die Abfrage ausführen, ist es mir 8 in der Ausgabe gibt. Die korrekte Ausgabe sollte 5 sein, weil es 5 Tutoren gibt, die das Thema mit der ID 1 unterrichten und sie alle aus der Stadt mit der ID 1 kommen.

Bitte Hilfe.

+0

Werden Sie Ihre Fragen selbst schreiben oder debuggen oder sollten wir eine Rechnung erstellen, um die Arbeit abzudecken, die wir für Sie erledigen. http://stackoverflow.com/questions/38697095/sql-count-function-not-working – RiggsFolly

Antwort

1
SELECT COUNT(DISTINCT tm.`tutor_id`) 
FROM `tutor_main` tm 
    JOIN `tutor_subjects` ts ON tm.`tutor_id` = ts.`tutor_id` 
    JOIN `sub_subjects` ss ON ss.`subs_id` = ts.`subs_id` 
    JOIN `town` tt ON tm.`town_id` = tt.`town_id` 
    JOIN `subject_level` sl ON sl.`sub_level_id` = ts.`sub_level_id` 
WHERE ts.`subs_id` = 1 
AND tm.`town_id` = 1 
+0

Vielen Dank für die Antwort. –

Verwandte Themen