Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
Php 从mysql中选择双向_Php_Mysql_Sql - Fatal编程技术网

Php 从mysql中选择双向

Php 从mysql中选择双向,php,mysql,sql,Php,Mysql,Sql,我需要从mysql中的loans表中为特定用户选择所有事务 我有两张表:贷款和用户 贷款 对于用户 所以,如果我使用bill的id 1为他选择,我应该会得到这个预期的输出 输出 正如您在“贷款”表中所看到的,用户既可以借入贷款,也可以借出贷款 这就是我试过的 SELECT loans.*, users.name, users.id as uid From loans Left Join users On users.id = loans.lender_id Left Join u

我需要从mysql中的loans表中为特定用户选择所有事务 我有两张表:贷款和用户

贷款

对于用户

所以,如果我使用bill的id 1为他选择,我应该会得到这个预期的输出

输出

正如您在“贷款”表中所看到的,用户既可以借入贷款,也可以借出贷款 这就是我试过的

SELECT loans.*, users.name, users.id as uid 
From loans
   Left Join users On users.id = loans.lender_id 
   Left Join users On users.id = loans.borrower_id
Where
  (loans.lender_id = 2 ) Or (loans.borrower_id = 2 );
但是我有语法错误

#1066 - Not unique table/alias: 'users'
请我在输出中制作和编辑


我做错了什么?

当您多次加入同一个表时,需要为它指定不同的别名,否则数据库引擎不知道您引用的是哪个别名

您的SQL应该是

选择 贷款。*,IFNULLul.name,ub.name,ifnullull.id,ub.id作为uid 从…起 贷款 左加入用户ul ON ul.id=loans.leander\u id 左加入用户ub ON ub.id=loans.follower\u id 哪里 loans.lender\u id=2或loans.borrower\u id=2;
使用同一个表编写联接查询时,必须为其分配不同的别名。因此,在这里您必须为用户表使用不同的别名。若存在相同的别名,那个么MySQL很难区分用户表的两个别名。因此,您必须手动分配不同的别名

在使用同一个表两次时,必须检查每个表是否不应为NULL

SELECT 
   loans.*, 
   IF(ul.name = NULL, ub.name, ul.name) as name, 
   IF(ul.id = NULL, ub.id,ul.id) as uid 
FROM
   loans
LEFT JOIN 
   users ul ON users.id = loans.lender_id 
LEFT JOIN 
   users ub ON users.id = loans.borrower_id
WHERE 
   ul.id = 2 OR ub.id = 2;
我得到1582-在为您的query@Smith对不起,在我的回答中应该是IFNULL-corrected。
SELECT loans.*, users.name, users.id as uid 
From loans
   Left Join users On users.id = loans.lender_id 
   Left Join users On users.id = loans.borrower_id
Where
  (loans.lender_id = 2 ) Or (loans.borrower_id = 2 );
#1066 - Not unique table/alias: 'users'
SELECT 
   loans.*, 
   IF(ul.name = NULL, ub.name, ul.name) as name, 
   IF(ul.id = NULL, ub.id,ul.id) as uid 
FROM
   loans
LEFT JOIN 
   users ul ON users.id = loans.lender_id 
LEFT JOIN 
   users ub ON users.id = loans.borrower_id
WHERE 
   ul.id = 2 OR ub.id = 2;