次のクエリに問題があります。
SELECT
badge.name AS badge_name, badge.description, badge.type, badges.time, user.name AS user_name
FROM
badges LEFT JOIN badge ON badges.badge_name = badge.name LEFT JOIN user ON user.id=badges.user_id
WHERE
user.name IS NOT NULL
ORDER BY badges.time DESC
LIMIT 5
ここで、結果の量が 0 でないことを確認したいので、 : の後にこれを追加して、いつものように確認しSELECT
ますcount(1) AS counter
。ただし、これは結果に影響します。
も持っているためにこれが問題になる可能性があることを見てきましたが、LIMIT
これを回避する最も効率的な方法は何ですか? 結果が返されたかどうかを確認し、結果がない場合に適切なメッセージを表示したいだけです。を使用しPDO
ていますが、 を使用して返された行の量を確認するSELECT
ことはできません。->rowCount()
編集:
はい、いいえ、結果があるかどうかを判断したい。私の通常の方法は、を使用してcount(1) AS counter
、次のようにカウンターの値を確認することです。
while($row['counter'] = $STH->fetch()){
if($row['counter'] == 0){
// Error message
}else{
echo $row['badge_name'] . "etc...";
}
}
ただしLIMIT
、これは(SQLFiddles を確認してください) のために結果を台無しにしているようです。
では、できれば単一のクエリでこれを確認するにはどうすればよいですか?