我正在建立一个网址缩短/重定向服务,我有点困惑,我怎么能最好地从两个表中获取数据.
我有两个这样的表:
重定向
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;