【问题标题】:SELECT one data only if all other table datas arre correct仅当所有其他表数据都正确时才选择一个数据
【发布时间】:2019-11-17 05:35:23
【问题描述】:

我一直在为一个 wordpress 社交媒体网站编写此代码,在该网站上,只有当他们不是你的朋友时,你才能看到异性的人(如果他们是你的朋友,他们会转到另一个页面)

在 php 中我已经可以区分男女,但现在我还想消除已经是你朋友的男人/女人

$query = "SELECT user_id FROM {$wpdb->prefix}bp_xprofile_data, WHERE field_id = 3 AND value = 'homme'";

(这样我只会得到男性),现在关于他们的朋友状态的信息在另一个表中,我尝试使用 WHERE EXIST 来调查它

$query = "SELECT user_id FROM {$wpdb->prefix}bp_xprofile_data, WHERE field_id = 3 AND value = 'homme' AND EXIST (SELECT id {$wpdb->prefix}bp_friends WHERE (initiator_user_id = $user_id AND is_confirmed = 1) OR (friend_user_id = $user_id AND is_confirmed = 1)) ";

但似乎不起作用。 我只想要第一个表中的user_id,但如果我想提取朋友状态(我不想提取,我只是希望它证实我的其他信息以删除 user_ids)我可以应用这个查询

$already_friends = "SELECT is_confirmed FROM  {$wpdb->prefix}bp_friends, WHERE initiator_user_id = $user_id OR friend_user_id = $user_id";

【问题讨论】:

  • 您似乎只需要一次查询即可获取所有数据。我说的对吗?
  • 显示你的架构

标签: php mysql wordpress phpmyadmin


【解决方案1】:

我不知道您所指的表格的结构是什么。根据提供的信息,这可能有效:


SELECT user_id 
FROM {$wpdb->prefix}bp_xprofile_data 
WHERE 
   field_id = 3 AND 
   value = 'homme' AND 
   user_id NOT IN (SELECT friend_user_id 
                   FROM {$wpdb->prefix}bp_friends 
                   WHERE initiator_user_id=$user_id AND is_confirmed=1) AND
   user_id NOT IN (SELECT initiator_user_id
                   FROM {$wpdb->prefix}bp_friends 
                   WHERE friend_user_id=$user_id AND is_confirmed=1)

我应该承认这个 SQL 语句看起来很糟糕:它很慢而且很难阅读。如果可能的话应该改进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-29
    • 2011-06-17
    • 2016-04-08
    • 1970-01-01
    • 2021-12-31
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多