0

特定のフィールドセットの mysql で空になっているフィールドの数を数えたいのですが、いくつかの例を見つけましたが、それらはすべてテーブル全体を通過します。

基本的に私は8つのフィールドを持っています、

listing_photo_1からlisting_photo_8まで、どれくらい埋まっているのかをカウントしたいです。

私は試した:

$result=mysql_query("SELECT count(*) as total from listings 
                       WHERE listing_photo_1 IS NOT NULL AND 
                             listing_photo_2 IS NOT NULL AND 
                             listing_photo_3 IS NOT NULL AND 
                             listing_photo_4 IS NOT NULL AND 
                             listing_photo_5 IS NOT NULL AND 
                             listing_photo_6 IS NOT NULL AND 
                             listing_photo_7 IS NOT NULL AND 
                             listing_photo_8 IS NOT NULL AND 
                             pmpid = '$pmpid'");

$data=mysql_fetch_assoc($result);
echo $data['total'];

結果は次のとおりです。1

私が期待している結果を明確にするために:

list_photo_1: 記入済み

list_photo_2: 記入済み

list_photo_3: 記入済み

list_photo_4: 空

list_photo_5: 空

list_photo_6: 空

list_photo_7: 空

list_photo_8: 空`

結果は3

4

2 に答える 2

1
WHERE listing_photo_1 IS NOT NULL AND listing_photo_2 IS NOT NULL....

編集:

各列のnullではない数を個別に取得する必要がある場合は、次のようにすることができます

SELECT count(listing_photo_1),count(listing_photo_2),....count(listing_photo_8) 
from listings where pmpid = id

Count(column)null 以外の値のみをカウントします。

于 2013-09-07T15:50:55.650 に答える
1

すべてのフィールドが NULL でない行の数をカウントしようとするコードを作成します。is not nullだけではなく、使用する必要がありますnot null

フィールドの数を数えるには、これを使用します。

SELECT sum((listing_photo_1 IS NOT NULL) +
           (listing_photo_2 IS NOT NULL) +
           (listing_photo_3 IS NOT NULL) +
           (listing_photo_4 IS NOT NULL) +
           (listing_photo_5 IS NOT NULL) +
           (listing_photo_6 IS NOT NULL) +
           (listing_photo_7 IS NOT NULL) +
           (listing_photo_8 IS NOT NULL)
          ) as total
from listings
WHERE pmpid = '$pmpid';

行数をカウントするには:

SELECT count(*) as total
from listings
WHERE listing_photo_1 IS NOT NULL AND
      listing_photo_2 IS NOT NULL AND 
      listing_photo_3 IS NOT NULL AND 
      listing_photo_4 IS NOT NULL AND 
      listing_photo_5 IS NOT NULL AND 
      listing_photo_6 IS NOT NULL AND 
      listing_photo_7 IS NOT NULL AND 
      listing_photo_8 IS NOT NULL AND 
      pmpid = '$pmpid'";

編集:

空白の場合は、次のようなロジックを使用します。

SELECT sum((listing_photo_1 IS NOT NULL and listing_photo_1 <> '') +
           (listing_photo_2 IS NOT NULL and listing_photo_2 <> '') +
           (listing_photo_3 IS NOT NULL and listing_photo_3 <> '') +
           (listing_photo_4 IS NOT NULL and listing_photo_4 <> '') +
           (listing_photo_5 IS NOT NULL and listing_photo_5 <> '') +
           (listing_photo_6 IS NOT NULL and listing_photo_6 <> '') +
           (listing_photo_7 IS NOT NULL and listing_photo_7 <> '') +
           (listing_photo_8 IS NOT NULL and listing_photo_8 <> '')
          ) as total
from listings
WHERE pmpid = '$pmpid';
于 2013-09-07T15:53:54.640 に答える