Ich versuche herauszufinden, welche Sprache ein Benutzer am meisten antwortet, und geben Sie user_id
, die language_id
antworten sie am häufigsten und wie oft sie Antworten haben.Mit MAX() und COUNT() in der gleichen Abfrage
Ich begann SELECT
einen Tisch/Untertabelle ing, die diese Ergebnisse zurückgibt:
Table: `sub-selected`
`user_id` `language_id` `answers`
1 1 1
2 1 1
1 2 5
2 2 2
1 4 3
1 5 1
Diese Tabelle gibt die user_id
, die language_id
, und wie oft, dass language_id
vom Benutzer beantwortet. Ich habe diese Abfrage um es zu bekommen:
SELECT t1.user_id, t2.to_language_id, COUNT(t2.to_language_id) as answers
FROM translation_results as t1
LEFT JOIN translations as t2
ON t2.translation_id = t1.translation_id
GROUP BY t2.to_language_id, t1.user_id
Die Tabellenstruktur ist:
Table: `translations`
`translation_id` `from_phrase_id` `to_language_id`
Table: `translation_results`
`translation_id` `result_id` PRI-AI `user_id`
Die translations
Tabelle speichert alle Übersetzungen angefordert und die translation_results Tabelle speichert die Antworten auf diese Übersetzungen und die jeweiligen user_id
.
Also, um die Tabelle zu summieren und die user_id zu bekommen, ihre meisten beantwortet language_id
, und wie oft sie in dieser language_id
beantwortet, habe ich:
SELECT t1.user_id, t1.to_language_id, MAX(t1.answers)
FROM (
//The sub-table
SELECT t1.user_id, t2.to_language_id, COUNT(t2.to_language_id) as answers
FROM translation_results as t1
LEFT JOIN translations as t2
ON t2.translation_id = t1.translation_id
GROUP BY t2.to_language_id, t1.user_id
) as t1
GROUP BY t1.user_id, t1.to_language_id
Aber nicht kollabiert die Tabelle in die gewünschte Struktur und stattdessen zurückgibt:
Table: `sub-selected`
`user_id` `language_id` `answers`
1 1 1
1 2 5
1 4 3
1 5 1
2 1 1
2 2 2
ich weiß es von der Gruppe von two clauses
betroffen ist, aber dann, wenn ich nur Gruppe von user_id und umfassen nicht to_language_id in meiner ausgewählten Spalten, kann ich nicht wissen, welche respectiv e language_id wird am häufigsten beantwortet. Ich habe auch versucht, Unterabfragen und ein paar Joins, aber ich finde, ich brauche ständig MAX(t1.answers)
unabhängig in den ausgewählten Spalten und zerstört damit meine Hoffnungen, die group by
korrekt zu kollabieren. Wie kann ich die Abfrage korrekt ausblenden, anstatt group by
alle eindeutigen MAX()
Kombinationen von user_id
und to_language_id
zu finden?
Hallo können Sie erstellen [SQL Fiddle] (http://sqlfiddle.com/) mit einigen Daten und fügen Sie Ihre Frage gewünschte Ausgabe? tnx –