php - 嵌套查询无法正确获取数据

标签 php mysql sql

问题

我有两个不同的表,表名称是team_requestteams[team_request] 拥有提交的每个团队的唯一记录,[teams] 使用唯一用户名保存重复记录,但团队数据与 [team_request] 中相同对于接受加入该团队的用户。

以下查询的预期结果:

我正在运行以下查询来获取待处理的挑战或团队请求,其基本逻辑是从 [team_request] 获取所有团队,而该团队在 中不存在[teams] 表或尚未被该用户忽略。

实际上查询正在做什么:

它从表[team_request]中获取属于该用户的所有行(团队),无论用户是否已异常(exception)或忽略。

还忘了提到上面fbC_status[team_request]中的一个字段,如果用户忽略了成为团队的一部分,它会保存用户的电子邮件地址。

任何帮助或指导将不胜感激,我只是被困住了。

MySQL 查询

SELECT *
FROM team_request
WHERE (c_emails LIKE '%<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a4cecbc1e4c1dcc5c9d4c8c18ac7cbc9" rel="noreferrer noopener nofollow">[email protected]</a>%')
  OR (c_emails LIKE '%9876543210%')
  AND fbC_status NOT LIKE '%<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dcb6b3b99cb9a4bdb1acb0b9f2bfb3b1" rel="noreferrer noopener nofollow">[email protected]</a>%'
  AND fbC_status NOT LIKE '%9876543210%'
  AND '%<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5832373d183d20393528343d763b3735" rel="noreferrer noopener nofollow">[email protected]</a>%' NOT IN
    (SELECT username
     FROM teams)
  AND t_name NOT IN
    (SELECT T.t_name
     FROM team_request TR,
          teams T
     WHERE TR.t_name = T.t_name
       AND T.username = '%<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="95fffaf0d5f0edf4f8e5f9f0bbf6faf8" rel="noreferrer noopener nofollow">[email protected]</a>%'
       AND (TR.fbC_status NOT LIKE '%<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4923262c092c31282439252c672a2624" rel="noreferrer noopener nofollow">[email protected]</a>%'
            AND TR.fbC_status NOT LIKE '%9876543210%')) 
LIMIT 0, 30

最佳答案

我建议你重新考虑你的数据库的结构,你的teams表似乎几乎是 team_requests 的重复项但考虑到当前的结构,请尝试以下操作:

@phone would be your '9876543210'
@username would be your '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b8d2d7ddf8ddc0d9d5c8d4dd96dbd7d5" rel="noreferrer noopener nofollow">[email protected]</a>'

SELECT r.*
FROM team_request r
WHERE (r.c_emails = @username OR r.c_emails = @phone)
  AND r.fbC_status <> r.c_emails
  AND r.t_name NOT IN ( SELECT t.name 
                        FROM teams t
                        WHERE /* t.username = r.c_emails otherwise: */
                              t.username = @username /* OR t.phone = @phone*/

                      )

目前还不清楚您的所有字段的用途,因此如果不进行更改,这不太可能起作用。注释掉的部分是我怀疑您应该使用的部分,但我无法知道它们是否适用于您的表格。

您可以随意使用您的LIKE '%...%'但请记住,如果用户有电子邮件 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="37564377525a565e5b1954585a" rel="noreferrer noopener nofollow">[email protected]</a> ,当用户的电子邮件地址为 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2a4b495845484b5e6a4f474b434604494547" rel="noreferrer noopener nofollow">[email protected]</a> 时也存在LIKE '%<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="91f0e5d1f4fcf0f8fdbff2fefc" rel="noreferrer noopener nofollow">[email protected]</a>% ' 将匹配它们。

关于php - 嵌套查询无法正确获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143377/

相关文章:

php - MongoDB(或JSON)的Word Cities/Towns/Countries数据库?

php - 结合这个MySQL查询会更高效

mysql - Laravel 可选 where() 查询

php - 除了 BLOB 类型之外,还有其他方式在 phpMyAdmin 中存储图像吗?

php - 在php中获取父类扩展类

mysql - GROUP_CONCAT 无法排序

javascript - 如何仅在需要时运行 Google Cloud SQL?

MySQL查询: Finding related attributes

sql - 重构字段的外键

sql - 如何创建索引以避免与 DISTINCT 一起使用的排序步骤?