2013-08-20 2 views
0

Я бегу этого SQL-запроса:Выберите из таблицы, где имена столбцов сравняться данные в другой таблице

$sql2="SELECT * from callplanmeta "; 
$rs2=mysql_query($sql2,$conn) or die(mysql_error()); 
while($result2=mysql_fetch_array($rs2)) 
{ 
    $column_list[] = $result2["callplanname"]; 
} 

$sql="SELECT LEAST(NULLIF(".implode(',',$column_list).",0)) as num FROM callplandata "; 
$rs=mysql_query($sql,$conn) or die(mysql_error()); 
while($result=mysql_fetch_array($rs)) 
{ 
    echo $result["description"].' - '.$result["num"].'<br><br>'; 
} 

Таким образом, в таблице callplanmeta являются строки с именами столбцов для таблицы callplandata.

Этот запрос работает нормально, но мне нужно, чтобы он не показывал значения, равные нулю из результата $result["num"]. Я хочу, чтобы он не показывал нулевые значения и просто показывал следующий для каждой строки.

ответ

1

Вы должны попробовать:

$sql="SELECT LEAST(NULLIF(".implode(',',$column_list).",0)) as num FROM callplandata WHERE LEAST(NULLIF(".implode(',',$column_list).",0)) != 0"; 

вместо:

$sql="SELECT LEAST(NULLIF(".implode(',',$column_list).",0)) as num FROM callplandata "; 
+0

я получаю эту ошибку Неправильный подсчет параметров в вызове собственной функции 'NULLIF' –

+0

и если я пытаюсь $ SQL =» SELECT LEAST (". Implode (',', $ column_list).") Как num FROM callplandata WHERE num IS NOT NULL "; я получаю сообщение об ошибке: Неизвестный столбец «num» in «where clause» –

+0

Если вы хотите отсортировать строки, в которых один столбец равен 0, вы можете: $ sql = «SELECT LEAST (« .modode (',', $ column_list). ") как num FROM callplandata WHERE num IS NOT 0"; (если он по-прежнему не работает, пришлите мне сообщение) – Christoph

Смежные вопросы