gpt4 book ai didi

android - bool 逻辑语法和MYSQL语法问题

转载 作者:行者123 更新时间:2023-11-30 00:39:32 25 4
gpt4 key购买 nike

我不是 bool 表达式的学习者,但这似乎让我有点头疼。在我的应用程序中,当我搜索用户时,我使用此 MYSQL 语句从我的数据集中接收某些值。

SELECT `u3`.`username`, 
CASE WHEN `u3`.`username` IS NULL THEN 'Not Existing'
ELSE 'Existing' END is_following
FROM `userinfo` `u3` WHERE `u3`.`username` LIKE '%".mysql_real_escape_string($data)."%' OR `u3`.`email` LIKE '%".mysql_real_escape_string($data)."%'
UNION
SELECT `u2`.`username`,
CASE WHEN `u2`.`username` IS NULL THEN 'Follow'
ELSE 'Following' END is_following
FROM
`userinfo` `u1` LEFT JOIN `followers` `f`
ON `u1`.`username` = `f`.`source_id`
LEFT JOIN `userinfo` `u2`
ON `f`.`destination_id` = `u2`.`username`
AND (`u2`.`username` LIKE '%".mysql_real_escape_string($data)."%' OR `u2`.`email` LIKE '%".mysql_real_escape_string($data)."%')
WHERE
`u1`.`username` = '$name'

现在上面的语法将返回这些值集、用户名和我自己的元数据。例如它会返回

值集 1:(davies 和现有)[如果 davies 在 userinfo 表中] AND(davies 和关注)[如果 davies 在关注者表中关注 halex]

                                  OR

值集 2:(空且不存在)[如果 davies 不在用户信息表中] AND(空且不跟随)[davies 不存在]

                                  OR

值集 3:(davies 和现有)[如果 davies 在用户信息表中] AND(空且不关注)[如果 davies 未关注 halex]

这些是我收到的一组值,我需要一个 if 语句来筛选,以便我可以向我的用户显示这个简单的信息davies 并关注davies 并关注[如果 davies 未关注 halex]用户不存在现在不确定我是否应该更改 SOL 语句的结构,或者我可以使用 if 和 else 语句获得更好的处理此逻辑的方法这是我的 if else 语句的结构,但它似乎没有按照我想要的方式工作

if(username != null && metadata.contains("Existing"))//user exist
{
value = username;
//user exists but skip
}else
{
if(username != null)
{
map = new HashMap<String, String>();
map.put(TAG_USERNAME, value);
map.put(TAG_METADATA, metadata);
listvalue.add(map);
}else
{
//user does not exist
Log.i("search ", "user does not exist");
}
}

以上代码属于android。谢谢任何建议。再次提前致谢。

最佳答案

如果将查询分成两部分怎么办?一次查询一组信息将使事情变得更简单且更易于调试。

我可以想象做一些看起来像这样的事情(用伪代码):

query = "SELECT username 
FROM `userinfo` `u3`
WHERE `u3`.`username` LIKE '%".mysql_real_escape_string($data)."%'
OR `u3`.`email` LIKE '%".mysql_real_escape_string($data)."%'"

var result = db.execute(query);
// set to true if the above query returns at least one row
bool user_exists = (result.RowCount() > 0)
var username = (user_exists)? result.GetRow().GetField("username") : null;

if(user_exists)//user exist
{
value = username;
//user exists but skip
} // ....

(我只复制了与 UNION 的第一个 SELECT 语句相关的功能;与第二个语句相关的逻辑可以类似地重写。)

关于android - bool 逻辑语法和MYSQL语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21889235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com