Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从一个表和两个表中选择值_Mysql - Fatal编程技术网

Mysql 从一个表和两个表中选择值

Mysql 从一个表和两个表中选择值,mysql,Mysql,我的数据库中有两个表,一个表包含社交网络的所有用户,第二个表包含跟踪谁的用户。现在,当用户A搜索用户B时,我希望不仅能够返回用户B,还能够告诉用户A是否在跟踪用户B。我尝试了这个方法,但它不起作用 "SELECT `destination_id` FROM `followers` WHERE `source_id` IN (SELECT `username` FROM `userinfo` WHERE `username` LIKE '%".mysql_real_escape_strin

我的数据库中有两个表,一个表包含社交网络的所有用户,第二个表包含跟踪谁的用户。现在,当用户A搜索用户B时,我希望不仅能够返回用户B,还能够告诉用户A是否在跟踪用户B。我尝试了这个方法,但它不起作用

"SELECT
`destination_id` 
FROM `followers` 
WHERE `source_id` IN
(SELECT `username`
 FROM `userinfo` WHERE `username`
 LIKE '%".mysql_real_escape_string($data)."%' OR 
`email`LIKE '%".mysql_real_escape_string($data)."%')"
每个表的示例 用户信息-->

追随者-->

请问这是否意味着我要做两个独立的查询,或者我可以将两个查询作为一个查询。如上所述

注意:
$data
是用户输入他搜索的用户时的关键值,它可以工作。目标_id和源_id属于followers表,其工作原理类似于此源_id跟随目标_id(即用户A跟随用户B)

希望清楚。

这个怎么样

SELECT userinfo.username, ifNULL(concat(followers.destination_id, ' IS FOLLOWED'), 'NOT FOLLOWED')
FROM userinfo 
LEFT OUTER JOIN followers
on userinfo.username = followers.destination_id
and followers.source_id = 'ABC'
WHERE (username
 LIKE '%XYZ' OR email LIKE '%XYZ%')

我会用这样的方式:

SELECT
  u1.*,
  CASE WHEN u2.username IS NULL THEN 'Not following'
       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 '%B%' OR u2.email LIKE '%B%')
WHERE
  u1.username='A'

请看fiddle。

是否
userinfo.username
关注者的数据类型相同。source\u id
?能否显示每个表的4或5行以使其更具可读性?是的,它们具有相同的数据类型@PeterGluck,我已使其更具可读性抱歉,我没有收到您的代码。这些代码如何表明用户A是否已经在跟踪用户BI认为我误解了原始问题,用于检查ABC是否在跟踪XYZIt的修改查询返回值,但“被跟踪”或“未被跟踪”未附加到返回的值。请对此提供帮助。请解释u1、u2和f是什么。这些代码对我来说太高级了。谢谢,不用管我懂密码了。工作起来很有魅力。非常感谢,但我有个问题。如果XYZ是新用户且不在followers表中,它将返回null。即使XYZ不在followers表中,但在userinfo表中,我如何返回XYZ。i、 e.如果XYZ后面跟ABC,则返回值XYZ following,即使XYZ不在数据库中,仍返回XYZ not following。
SELECT userinfo.username, ifNULL(concat(followers.destination_id, ' IS FOLLOWED'), 'NOT FOLLOWED')
FROM userinfo 
LEFT OUTER JOIN followers
on userinfo.username = followers.destination_id
and followers.source_id = 'ABC'
WHERE (username
 LIKE '%XYZ' OR email LIKE '%XYZ%')
SELECT
  u1.*,
  CASE WHEN u2.username IS NULL THEN 'Not following'
       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 '%B%' OR u2.email LIKE '%B%')
WHERE
  u1.username='A'