摆弄表格 here
我将以下 sql 与 fiddle 中的表一起使用,以检查用户是否已达到借用限额。这里的问题是,如果提供了无效的元素编号,它会返回 NULL,如果用户没有借过任何元素,它会返回 NULL。这样,我无法判断是否提供了无效的项目编号,或者用户是否实际上没有借过任何书籍。检查是否提供了无效的项目编号或成员(member)实际上没有借过该类别下的任何东西的好方法是什么?
set @mId = 3 //Has not borrowed anything till now.
set @id = 21; //This item does not appear in the collection_db table and is therefore invalid.
set @country = 'US';
SELECT col1.id, col1.holder, col2.borrowMax maxLimit, count(lend.borrowedId) as `count`
FROM collection_db col1
INNER JOIN collection_db col2
ON col1.holder = col2.id
INNER JOIN lendings lend
ON col1.holder = lend.holder and col1.country = lend.country
WHERE col1.id = @id and col1.country = @country
AND col2.category = 10
AND lend.memId = @mId and lend.country = @country
最佳答案
我可以用一个查询得到的最远的是(必须取出 php 和“country”vars 才能使 fiddle 工作):
SELECT col1.id, col1.holder, col2.borrowMax maxLimit, count(lend.borrowedId) as `count`
,case when valid1.id is not null then 'true' else 'false' end as validId
FROM collection_db col1
INNER JOIN collection_db col2
ON col1.holder = col2.id
INNER JOIN lendings lend
ON col1.holder = lend.holder,(
Select Distinct a.id From collection_db a
Where a.id = 4) valid1
WHERE col1.id = 4
AND col2.category = 10
AND lend.memId = 1
您可能必须执行准备查询以检查有效的 memId:
$theQuery = "SELECT DISTINCT memId FROM lendings WHERE memId = 1"
然后在这里测试一下:
if (mysql_num_rows(mysql_query($theQuery)) <= 0) { /* No memId exists */ }
else { /* Do big query here */ }
关于php - 以下sql查询中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730557/