SELECT k.kanji, l.curve, GROUP_CONCAT( DISTINCT p.pron SEPARATOR ', ' ) AS pron, GROUP_CONCAT( DISTINCT e.meaning SEPARATOR ', ' ) AS mean, GROUP_CONCAT(DISTINCT CONCAT('', ex.word, ' [', ex.reading, '] : ', g.gloss) SEPARATOR '
') AS example FROM ( SELECT k.id, k.kanji, k2w.word_id FROM kanjis k LEFT JOIN kanji2word k2w ON k2w.kanji_id = k.id JOIN kanji2word k2w2 ON k2w2.kanji_id = k.id AND k2w2.pri > k2w.pri WHERE k.jlpt >= '2' GROUP BY k.id, k2w.kanji_id, k2w.word_id HAVING COUNT( k2w2.kanji_id ) <= 3 ) AS k LEFT JOIN jmdict ex ON ex.id = k.word_id LEFT JOIN jmdict_gloss g ON g.jmdict_id = ex.id AND g.sense_pos = 0 AND g.gloss_pos = 0 LEFT JOIN learning l ON l.kanji_id = k.id AND l.user_id = '1' LEFT JOIN pron p ON p.kanji_id = k.id AND p.type != 'nanori' LEFT JOIN english e ON e.kanji_id = k.id WHERE ( l.curve > '1050' ) GROUP BY k.id ORDER BY p.type DESC , l.curve DESC