mysqli 查询加入两个唯一键

mysqli query join with two unique key

大家好,我的网页上有这个查询

 $otherupdates=mysqli_query
($conn,"
    SELECT f.sender,f.receiver,f.field,m.name 
    FROM friend f,members m
    WHERE ((f.sender IN ($variable) OR f.receiver IN ($variable)) 
    AND ( f.field='friends' || f.field='fan') 
    AND ( f.date > '$adatevariable' AND f.sender=m.id)) 
    ORDER BY date DESC LIMIT 16"
);

$variable="'1','2','3'......"; // not important
$adatevariable=date('d', strtotime($today . ' - 2 day'));// not imp

这个查询所做的是,获取所有与 where 子句匹配的行,还获取发件人的姓名 (f.sender=m.id),但我也想要接收方的姓名仅查询我不需要另一个查询..

这可行吗,请帮忙

如果您将查询更改为:

select 
    f.sender,
    f.receiver,
    f.field,
    senders.name AS sender_name,
    recievers.name AS recievers_name
from 
    friend f
    INNER JOIN members senders ON f.sender=senders.id
    INNER JOIN members recievers ON f.receiver = recievers.id
where 
    (f.sender IN ($variable) or f.receiver IN ($variable)) 
    and f.field IN ('friends', 'fan') 
    and f.date > '$adatevariable'
order by 
    date desc 
limit 16

这样做是允许您访问 members table 两次,一次作为 senders,另一次作为 recievers。通过将这些加入 friend table 的 senderreciever 字段,senders 将拥有发件人的所有信息,而 recievers 将有接收者的所有信息。