【发布时间】:2020-08-09 04:44:37
【问题描述】:
希望加入 3 个表,但在最后一个表中遇到问题。
members
ID | name
---------
1 | John
2 | Jane
3 | Jack
member_points(成员之间可以有多个交易)
ID | date | id_from | id_to
---------------------------
1 | 8/8 | 1 | 2
2 | 8/8 | 1 | 2
3 | 8/8 | 3 | 2
member_ratings(一个会员只能评价另一个会员,一次)
ID | id_from | id_to | rating
-----------------------------
1 | 2 | 1 | 5
每个会员只能对每个会员进行一次评分,并且只能根据member_points 表对他们获得积分的会员进行评分。
我当前的查询实现了这一点,但是我在介绍第三个表时遇到了困难,该表将包含相应的评级。
这是我目前所拥有的:
$sql = '
SELECT *,
m.id AS id,
c1.id AS id_from,
c1.name AS name_from,
c2.id AS id_to,
c2.name AS name_to
FROM member_points AS m
JOIN members AS c1 ON m.id_from = c1.id
JOIN members AS c2 ON m.id_to = c2.id
and m.id_to='.$_SESSION["userid"].'
GROUP BY name_from';
我的目标是加入第三张桌子,这样我就可以调用相关的评级。
ID | name_from | name_to | rating
----------------------------------
1 | 2 | 1 | 5
2 | 2 | 3 | pending
【问题讨论】:
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你期望的内容和原因。
-
COALESCE(t3.rating, 'pending')