2016-05-12 5 views
0

Hellow, ich habe dieses Problem, ich weiß nicht, wie komplexe Abfragen auf Moodle erstellen, habe ich die Dokumentation über Datenmanipulation gelesen und nichts hat für mich gearbeitet.Wie komplexe SQL-Abfragen in Moodle

Dies ist die Abfrage, die ich erhalten möchten:

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); 

Ich würde die Hilfe wirklich zu schätzen, danke.

Antwort

1

Hier ist ein aufgeräumter Version der Abfrage

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' 

In Moodle Sie so etwas wie dieses

$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); 

oder diese verwenden, wenn Sie erwarten ein einzelnes Ergebnis verwenden würde:

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

Alter, nur ... vielen Dank, ich habe so schlecht gekämpft, du bist der Mann. – elunap