mysql – SQL在两个表上加入Codeigniter?

我正在建立一个网址缩短/重定向服务,我有点困惑,我怎么能最好地从两个表中获取数据.

我有两个这样的表:

重定向

id
datetime
ip_address
browser_agent
url_string

链接

id
alias
url
created
user_id

链接存储链接详细信息,每次重定向时,它都会在重定向表中记录为每个重定向的单行.

链接中的别名和重定向中的url_string是相同的.例如Dw4所以域名将是example.com/Dw4 – 重定向到链接中的url字段.

我想要实现的是从重定向表中选择(并计数)所有重定向,其中url_string与别名相同,然后user_id与登录用户相同.

我正在使用Codeigniter.

到目前为止,我正在尝试这样的事情:

$query=$this->db->query("SELECT * " . "FROM links, redirects " . "WHERE links.alias = redirects.url_string");

但我没有运气.

最佳答案 像这样加入两个表:

SELECT 
  r.*
FROM redirects r
INNER JOIN links l ON r.url_string = l.alias;

更新:试试这个:

SELECT 
  l.*,
  r.browser_agent,
  rCounts.redirectsCount
FROM links l
INNER JOIN redirects r ON r.url_string = l.alias
INNER JOIN
(
   SELECT url_string, COUNT(*) redirectsCount
   FROM redirects 
   GROUP BY url_string
) rCounts ON rrCounts.url_string = l.alias;
点赞