2012-09-27 2 views
0

S'il vous plaît aider à changer la requête MySQL ci-dessous pour SQLiteConvertir une requête de MySql à SQLite

SELECT 
    DISTINCT t.arabic_term AS t__1, 
    SUBSTR(t.definition, 1, 60) AS Definition, 
    Sum(if(t3.is_main="y", 1 ,0)) AS t3__5 
FROM term t 
INNER JOIN term_disease t2 ON (t2.disease_id = t.term_id) 
INNER JOIN term_disease_symptom t3 ON (t3.disease_id = t2.disease_id) 
WHERE (t3.symptom_id in (45378 , 45351, 5546) AND t2.gender != 1 AND t2.active = 1) 
GROUP BY t3.disease_id 
ORDER BY t3__5 desc; 

Répondre

1

Ci-dessous

Sum(if(t3.is_main="y", 1 ,0)) AS t3__5 

Sould être remplacé par

SUM(CASE t3.is_main WHEN 'y' THEN 1 ELSE 0 END) AS t3__5 
+0

je vais l'essayer ...... merci mon ami – aziz

1

SQLite ne possède pas de fonction IF, mais l'expression booléenne sont définis comme ayant les valeurs 1 ou 0. Donc cette expression particulière serait:

SUM(t3.is_main = 'y') AS t3__5 

Tout le reste est du SQL standard.

+0

quid du 0, 1 ??? comment je peux le gérer – aziz

+0

En SQLite, l'expression 't3.is_main = 'y'' est déjà _is_ 0 ou 1. –