[英]SQL Join in Codeigniter on two tables?
我正在構建一個url縮短/重定向服務,我對如何最好地從兩個表中獲取數據感到有些困惑。
我有兩個這樣的表:
重新導向
id
datetime
ip_address
browser_agent
url_string
鏈接
id
alias
url
created
user_id
鏈接存儲鏈接的詳細信息,每當有一個重定向時,它就作為每個重定向的一行記錄在重定向表中。
鏈接中的 alias
和重定向中的url_string
相同。 例如Dw4
因此域名將為example.com/Dw4
重定向到鏈接中的url
字段。
我要實現的目標是從重定向表中選擇(並計數)所有重定向,其中url_string
與alias
相同,然后user_id
與登錄用戶相同。
我正在使用Codeigniter。
到目前為止,我正在嘗試這樣的事情:
$query=$this->db->query("SELECT * " . "FROM links, redirects " . "WHERE links.alias = redirects.url_string");
但是我沒有運氣。
像這樣JOIN
兩個表:
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;
您可以為此使用join
:
$this->db->select('*');
$this->db->from('links');
$this->db->join('redirects', 'redirects.url_string = links.alias');
$query = $this->db->get();
return $query->result;
並且在視圖中使用foreach
語法foreach
顯示db-contents。
就像您說的那樣,已登錄用戶的user_id應該相同,您還應該將join與user_id一起使用以獲取特定的user_id詳細信息,因此您的查詢應類似於:
SELECT redirects.id,count(*) FROM redirects inner join links
on redirects.url_string=links.alias
and redirects.id=links.user_id
group by redirects.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.