如何在moodle中创建复杂的sql查询

时间:2016-05-12 02:14:40

标签: moodle

Hellow,我有这个问题,我不知道如何在moodle上创建复杂的查询,我阅读了有关数据操作的文档,没有任何对我有用。

这是我想要的查询:

SELECT mdl_pilar.nombrepil, mdl_punto.texto as pregunta, mdl_audidet.texto as comentario, mdl_audidet.resultado 
FROM mdl_audidet, mdl_pilar, mdl_punto 
WHERE mdl_audidet.idaud='1' and mdl_audidet.idpunto=mdl_punto.idpunto and mdl_audidet.idtipoaud='1' AND 
mdl_pilar.idpilar=(SELECT mdl_pilar.idpilar FROM mdl_pilar WHERE mdl_punto.idpilar=mdl_pilar.idpilar);

我非常感谢你的帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

以下是查询的更整洁版本

SELECT pi.nombrepil,
        pu.texto AS pregunta,
        a.texto AS comentario,
        a.resultado 
FROM mdl_audidet a
JOIN mdl_punto pu ON pu.idpunto = a.idpunto
JOIN mdl_pilar pi ON pi.idpilar = pu.idpilar
WHERE a.idaud = '1'
AND a.idtipoaud = '1'

在Moodle中你会使用类似这样的东西

$sql = "SELECT pi.nombrepil,
                pu.texto AS pregunta,
                a.texto AS comentario,
                a.resultado 
        FROM {audidet} a
        JOIN {punto} pu ON pu.idpunto = a.idpunto
        JOIN {pilar} pi ON pi.idpilar = pu.idpilar
        WHERE a.idaud = :idaud
        AND a.idtipoaud = :idtipoaud";

$params = array('idaud' => '1', 'idtipoaud' => '1');

$records = $DB->get_records_sql($sql, $params);

如果您期望获得单一结果,请使用此选项:

$record = $DB->get_record_sql($sql, $params);