Ничего сложного здесь нет.
Я рекомендую пользоваться псевдонимами для сокращения записей и упрощения.
Например характерный запрос из моих программ.
q = u'''SELECT t0.tag_id, t2.name 'Название тега', t4.name 'Шкаф', bays.name 'Раздел', t5.name 'Объект', t1.value 'Значение', t7.name 'Размерность', t3.name 'Качество', t6.text 'Примечание'
FROM currents t0
LEFT JOIN (tags t2) ON (t0.tag_id=t2.id)
LEFT JOIN (readdata t1, sections t4, bays, objects t5, texts t6, dimensions t7)
ON (t2.id=t1.tag_id AND t2.section_id=t4.id AND t2.bay_id=bays.id AND t2.object_id=t5.id AND t2.text_id=t6.id AND t2.dimension_id=t7.id)
LEFT JOIN (quality t3) ON (t1.quality_id=t3.id) WHERE (t0.page="'''+page+'")'
Или чуть поменьше
q = u'''SELECT t0.tag_id, t2.name, t3.text, t2.min, t2.max, dim.name
FROM headers t0
LEFT JOIN (tags t2) ON (t0.tag_id=t2.id)
LEFT JOIN (texts t3,dimensions dim) ON (t2.text_id=t3.id AND t2.dimension_id=dim.id)
WHERE (t0.page="%(p0)s")''' %{"p0":p}
А это с сортировкой
q=u'''SELECT t1.timestamp, t1.di1, t1.di2, t1.di3, t1.di4, t1.di5, t1.di6, t1.di7, t1.be7_a2, t1.be7_pa1, t1.be7_pv1, t1.be8_pa1, t1.be8_pv1, t1.be56_pa1, t1.zvu3_IREC, t1.zvu3_UBBR, t1.zvu4_IREC, t1.zvu4_UBBR, t1.noconn
FROM tagdata t1
%(where)sORDER BY %(sidx)s %(sord)s LIMIT %(start)s, %(limit)s''' %{"where":where, "sidx":sidx, "sord":sord, "start":start, "limit":limit}
Ничего заумного нет. Вы можете отработать и попробовать выполнять запросы в phpmyadmin. Я обычно в geany держу отрабатываемый и редактируемы запрос и просто копирую в phpmyadmin. Очень удобно и наглядно получается.