Php 连接相同表的多行

Php 连接相同表的多行,php,sql,Php,Sql,我试图从一个表中提取两组不同的数据。不过,我不太确定如何处理这个问题。这是当前设置的表(相关) 通过使用以下查询,我可以使收件人与姓名匹配: SELECT usr.username, usr.id, sl.recipient, sl.given_by, sl.time, sl.experation, sl.points, sl.reason FROM DD_users AS usr LEFT JOIN DD_schittlist AS sl ON (sl.re

我试图从一个表中提取两组不同的数据。不过,我不太确定如何处理这个问题。这是当前设置的表(相关)

通过使用以下查询,我可以使收件人与姓名匹配:

SELECT 
   usr.username, usr.id,  sl.recipient, sl.given_by, 
   sl.time, sl.experation, sl.points, sl.reason
FROM 
    DD_users AS usr
LEFT JOIN
    DD_schittlist AS sl
ON (sl.recipient = usr.id)       
GROUP BY
        usr.id
ORDER BY 
        sl.points DESC,
        usr.username

这将使收件人72与用户72相匹配,但我还想使gived by 1显示admin,gived by 4显示为user4。

您需要针对
DD\u users
表加入两次,一次用于
id
,另一次用于
gived\u by
。每个都有自己的别名,必须在
SELECT
列表中使用别名来消除歧义(
usr,给定的

尝试以下操作:(您只需为DD_users表的第二个引用添加别名,并添加第二个join语句,然后在select语句中引用别名用户名列。)


为什么左外连接?从这个模型看来,这两个表之间应该始终存在链接。除非,你打算允许删除数据吗?我从一个模型中使用它,该模型不是所有的值都有链接,但我希望以任何方式显示它们。我不是SQL中所有连接的专家,所以如果它能工作,我就不用管它了。谢谢。没想到会像做第二个别名那么简单。
SELECT 
   usr.username, usr.id,  sl.recipient, sl.given_by, 
   sl.time, sl.experation, sl.points, sl.reason
FROM 
    DD_users AS usr
LEFT JOIN
    DD_schittlist AS sl
ON (sl.recipient = usr.id)       
GROUP BY
        usr.id
ORDER BY 
        sl.points DESC,
        usr.username
  SELECT 
    /* The original username you already had */
    usr.username, 
    usr.id,  
    sl.recipient, 
    sl.given_by, 
    /* The given_by username from the given alias table */
    /* Be sure to alias this column here as well to differentiate them in the client */
    given.username AS given_by_username,
    sl.time, 
    sl.experation, 
    sl.points, 
    sl.reason
  FROM 
    DD_users AS usr
    /* First join you already had between id and recipient */
    LEFT JOIN DD_schittlist AS sl ON (sl.recipient = usr.id)       
    /* A second LEFT JOIN between DD_shittlist and DD_users as given */
    /* (LEFT JOIN permits nulls in DD_shittlist.given_by) */
    LEFT JOIN DD_users AS given ON sl.given_by = given.id
  GROUP BY
    usr.id
  ORDER BY 
    sl.points DESC,
    usr.username
  SELECT 
    usr.username, usr.id,  sl.recipient, sl.given_by, usr2.username, sl.time, sl.experation, sl.points, sl.reason
  FROM 
    DD_users AS usr
  LEFT JOIN DD_schittlist AS sl  ON (sl.recipient = usr.id)    
  JOIN DD_users as usr2 ON (usr2.id = sl.given_by)   
  GROUP BY
    usr.id
  ORDER BY 
    sl.points DESC,
    usr.username