繁体   English   中英

尝试获取distint结果,但使用mysqli语句查询不起作用

[英]Trying to fetch the distint result but it does not work using mysqli statement query

我想从具有多对多关系的三个表中获取数据。 这是我数据库的表结构。

使用者

uid[pk] fname lname username
 1      John  smith johnsmith

活动

act_id[pk] title
 log       Account Login
 reg       Account Registration

user_activity

serial_number[pk] act_id[fk] user_id[fk] ip_address date time
1                  reg           1       2.2.2.2      - 
2                  log           1       1.1.1.1      -                

我正在尝试获取:

title  ip_address date time

这是我的mysqli查询语句:

SELECT a.title, ua.ip_address, ua.date, ua.time FROM users u 
LEFT JOIN user_activity ua ON ua.user_id = u.uid 
LEFT JOIN activity a ON a.activity_id = ua.act_id 
WHERE u.username=?"

它从数据库中获取数据,我得到3个结果,而不仅仅是1个:

Title            Ip_address      Date                Time

Account Login    1.1.1.1         Mon,Nov4 2013       5:5pm
Account Login    1.1.1.1         Mon,Nov4 2013       5:5pm
Account Login    1.1.1.1         Mon,Nov4 2013       5:5pm

我使用了DISTICT,但是它不起作用。 如果我错了,请让我正确。 谢谢

如果我对您的理解正确,则只需添加GROUP BY

SELECT 
  title, ip_address
FROM
  users AS u
LEFT JOIN
  user_activity AS ua ON ua.user_id = u.uid
LEFT JOIN
  activity AS a ON a.activity_id = ua.act_id 
WHERE
  u.username = ?
GROUP BY
  ua.ip_address

我自己弄清楚了。 现在它的工作正常。 这是查询。

SELECT a.title, ua.ip_address, ua.date, ua.time
FROM users AS u
LEFT JOIN user_activity AS ua ON ua.user_id = u.uid
LEFT JOIN activity AS a ON a.activity_id = ua.act_id
WHERE u.username = 'johnsmith'
GROUP BY ua.serial_number

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM