2017-01-10 12 views
0

私は4つの個別のクエリをMySQL DBに作成しています。これらのクエリはすべてWHEREパラメータを除き同一です。であるの2:これらのMySQLクエリを実行するためのより雄弁な方法はありますか?

$totalInvites = mysqli_num_rows(mysqli_query($con, "SELECT code FROM invites")); 
$usedInvites = mysqli_num_rows(mysqli_query($con, "SELECT code FROM invites WHERE used IS NOT NULL")); 

は$ totalInvitesクエリを行うと、返されたテーブルからの方法は、別のクエリを実行せずにWHERE呼び出しを行う、ありますか?

それは混乱だ場合は、これは私が何を意味するかの例です:

$query = mysqli_query($con, "SELECT code FROM invites"); 
$totalInvites = mysqli_num_rows($query); 
$usedInvites = mysqli_num_rows($query /*WHERE used IS NOT NULL*/); 

私はそれが適切な構文ではありません知っているが、それは私が発言権をしようとしていたものです。できるだけ少しSQLとして

+0

何が欲しいですか?使用されたコードと使用されていないコードによってカウントされますか? – chris85

+0

可能であれば、基本的に1つのクエリーになります。複数のクエリでこれをやっているように動作しますが、よりクリーンな方法があるかどうかを確認したいのです – TehPirate

答えて

2

を必要とするものに応じてPHPの結果解析本当にではありません良い考え。 countの代わりにジュースタスクは:

SELECT COUNT(*) AS count, used 
    GROUP BY used 

これは2行、1つの使用されているもののカウントとusedを想定されていないことだけNULLまたは単一の非null値を持つものにあなたを与えるだろう。

+0

ありがとう、これは実際に必要なものです。 – TehPirate

0

用途:

SELECT if(used is null, 0, 1) AS used, code 
FROM invites 

そして、あなただけの数が、その後、データベース全体を検索し、結果を投げたい場合は

0
SELECT 
(SELECT code FROM invites) total 
(SELECT code FROM invites WHERE used IS NOT NULL) used 
関連する問題