Aşağıdaki gibi Yani nispeten uzun bir sorgu var:
SELECT (
(CASE Methanethiol
WHEN -1 THEN 0
ELSE Methanethiol
END)
+
...
+
(CASE nHeptanethiol
WHEN -1 THEN 0
ELSE nHeptanethiol
END)
)
FROM condensates.mercaptans
WHERE (
(CASE Methanethiol
WHEN -1 THEN 0
ELSE Methanethiol
END)
+
...
+
(CASE nHeptanethiol
WHEN -1 THEN 0
ELSE nHeptanethiol
END)
) IS NOT NULL
Sorun sorgu MySQL admin mükemmel çalışıyor, ancak PHP ben daha sonra 4 sütun eklediğinizde yutabilir gibi görünüyor ve bana bir NULL sonuç vermesidir. Herhangi bir ipucu? Ayrıca, ben sadece tüm SEÇ parametresi için NOT NULL koşul belirlemek yerine tekrar dışarı kopyalama için bazı kolay yolu eksik?
EDIT: istenen aşağıdaki gibidir, bu sorgu çağırır PHP ...
İlk işlev çağrısı:
$ Mr = avg (sorgu ($ özellik, 'mekaptanlar', $ tarih ['mostRec']), $ özelliği);
: Sorgu ve avg olarak tanımlanan yerlerde
function avg($query, $colName){
$iter=0;
$sum=0;
while($row = mysql_fetch_array($query)) {
if($row[0]!==NULL){
$iter++;
$sum += ($row[$colName]==-1) ? 0 : $row[$colName];
}
}
mysql_free_result($query);
if ($iter==0)
return '-';
else {
$avg = ($sum / $iter);
if(lessThanMDL($avg, $colName))
return 'ND';
else
return $avg;
}
}
function query($selectWhat, $fromTable, $sampleIDs,$orderBySampIDAsc='false'){
$query = "SELECT ";
$query .= mysql_real_escape_string($selectWhat);
$query .= " FROM ";
$query .= mysql_real_escape_string($fromTable);
if(count($sampleIDs) >= 1) {
$query .= " WHERE (";
$iter=0;
while($iter < count($sampleIDs)-1){
$query .= "(SampleID=" . >mysql_real_escape_string($sampleIDs[$iter]) . ") OR ";
$iter++;
}
$query .= "(SampleID=" . >mysql_real_escape_string($sampleIDs[$iter]) . "))";
$query .= " AND " . mysql_real_escape_string($selectWhat) . " IS NOT NULL";
} else {
$query .= " WHERE SampleID=0"; # always returns nothing
}
if($orderBySampIDAsc=='true')
$query .= " ORDER BY SampleID ASC";
global $condensatesdb;
return mysql_query($query, $condensatesdb);
}
Maalesef o kadar aralıklı oluyor - Ben başka türlü biçimlendirilmiş almak için görünmüyor olabilir. Her neyse, bu kod sayfada 30 diğer sorgulara muhtemelen yakın çalışıyor, ama sadece bu biri için başarısız olur.