Php 从mysql中选择双向
我需要从mysql中的loans表中为特定用户选择所有事务 我有两张表:贷款和用户 贷款 对于用户 所以,如果我使用bill的id 1为他选择,我应该会得到这个预期的输出 输出 正如您在“贷款”表中所看到的,用户既可以借入贷款,也可以借出贷款 这就是我试过的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
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;