2016-12-03 2 views
0

を返すために、これは私のクエリで期待:MySQLのクエリの戻りブールが、私はID

select id 
from inquiry 
where id = (select min(id) from inquiry where (id > 108 AND is_deleted=N)) 

このクエリで間違っていますか? idは108と結果と比較され、私は、ネストされたのように期待してい は108よりも大きくなりますが、それは nextIdUserInquiry(108、$詐欺、「N」)のようなパラメータを持つブール

関数呼び出しを返します。

全体関数本体は

function nextIdUserInquiry($inquiryId, $conn, $cond) 
    { 
    echo "in function"; 
    $qry="select id from inquiry where id = (select min(id) from inquiry where (id > $inquiryId AND is_deleted=$cond))"; 
    echo $qry; 
    $result = $conn->query($qry); 
    $row = $result->fetch_assoc(); 
    echo $row["id"]; 
    } 

を下回っているとMySQLのエラーが が ":\ XAMPP \ htdocsに\ besttour \管理者\ connect_db_test.php Cでブール値にメンバ関数FETCH_ASSOC()の呼び出し" ということです

+0

DBインタフェースを使用すると、クエリ、空またはエラーを実行したときに何と言っていますか? PHPがここに関係する場合は、PHPの使用法を追加してください。 – chris85

+1

'is_deleted = N' ...これはAFAIKを実行しません。文字通りこれはあなたのクエリにありますか? –

+2

あなたはどのように結果が論理的であると結論づけましたか?あなたのクエリによると、結果は 'ID'になるはずです。あなたのクエリは、あなたがいくつかの重複した 'Id's'を持っていない限り、クエリーと同じ結果を与える間に、' select min(id)from inquiry(id> 108 AND isdeleted = N) 'と書くことができます。 –

答えて

0

内側クエリはクエリセットを返します。したがって、...where id=(select...を使用することはできません。代わりに...where id in (select..を使用してください。

またはより良い次のように試してみてください。

select id 
from inquiry 
where (id > 108 AND is_deleted=N) 
order by id asc 
limit 1 

(P.Salmonにタンク)

+0

この問題を解決するには? @TeacherLongLifeLearning – Naila

+0

サブクエリを使用することができます.. – chris85

+0

ここで正しいクエリを書くことができますか?助けてくれてありがとう – Naila

関連する問題