2016-04-14 16 views
0

Ben formatının satır sayısı dönmelidir bir sorgu var testi getirmeMySQL: hayır eşleşme yoksa hiçbir maçları

+---------------------+-------+ 
| Date    | Count | 
+---------------------+-------+ 
| 2016-04-15 01:00:00 | 10 | 
+---------------------+-------+ 

, sorgu bir sürü yeniden çalıştırır

+---------------------+-------+ 
| Date    | Count | 
+---------------------+-------+ 
| Null    |  0 | 
+---------------------+-------+ 

Bu koşulların her ikisini de test etmek istiyorum ve birincisi bazı JSON'ları iade etmek ve ikinci tur için boş JSON (JONS 'Hiçbiri', '0' değil).

Ben

$firstRow = $sqlQuery->fetch(PDO::FETCH_ASSOC); 
    if ($firstRow['Count'] == 0) 
     $returnData = ''; 
    else 
     $returnData = $sqlQuery->fetchAll(PDO::FETCH_ASSOC); 

Ancak, 'Bakmak' görünüyor ilk satırı gözetleme için çalıştı ilk satır bu durumda JSON verileri de boş olduğu gibi, sonradan fetchAll() olamaz anlamına gelir.

Yanlış anlıyor muyum? Bu kontrolü nasıl kodlayabilirim?


[Updfate] sorun sorgu NULL, 0 ile, her bir tarih için bir satır geri olmasıdır.

verileri "gerçek" ise

, sadece FETCH_ALL() ve sonra json_encode() ama ben yapmak istemiyorum NULL, 0 tüm lats olması durumunda enj ben json_encode() için boş bir dize wan ve bu dönebilir, o yerine.

+0

Sorgunuzu paylaşabilir misiniz? – Paul

+0

'fetch()' işlevini çağırıp 'fetchAll()' işlevi 2 veritabanı sorgusuyla sonuçlanır. Varsa, sonuçların getirilmesini istediğinizden, yalnızca bir kez 'fetchAll()' işlevini çağırmayın ve sonra döndürülmüş dizinin sayısı 1 ile eşit olan değerin 1 olup olmadığını kontrol etmek için PHP'yi kullanın. json_encode ([]) veya bu durumda ne yapmak istersin? – Anton

+0

Sorgu, her zaman birden çok satır döndürdüğü için. Hepsi "Boş, 0" olup olmadıklarını kontrol etmem gerekiyor, ama sadece birinin olup olmadığını kontrol etmek yeterli. PHP ile SQL'den daha iyisini yapmak daha iyi olurdu. – Mawg

cevap

1

Sorgunuz büyük olasılıkla NULL, 0 tupl'leri yerine yeniden döndürmek için yeniden biçimlendirilecek. Ancak, hızlı ve kirli bir düzeltme, sorgunuzu NULL tarihlerini filtreleyerek başka bir tane içinde çalıştırmak olabilir:

SELECT * FROM (<your current query>) x WHERE `Date` IS NOT NULL 
+0

Eh, sorgu http://stackoverflow.com/questions/36531264/how-to-code-deeply-nested-join kabul cevabı yin ve sadece 'WHERE' Tarih 'NULL değil 'tama gibi görünüyor dediğin gibi, çalışacak (+1) (daha iyi optimize edilemezse?) – Mawg

İlgili konular