2009-12-03 92 views
0

我有一個表,打了個比方,「節點」,從中我需要返回值,如下所示:Mysql的多個表中選擇

SELECT nid FROM node WHERE type = "book" 

後,我得到的值的列表讓我們說:

|**nid**| 
|123| 
|12451| 
|562| 
|536| 

然後我需要採取這些值,並檢查另一個表中,行,其中列「路徑」具有值「節點/ 123」,「節點/ 12451」(數字先前的請求返回)在一個加入請求。如果collumn'path'有簡單的數字,沒有'node /',這一切都會更容易。 然後還計算返回的相同數量即'節點/ 123'。 最終的結果會是這樣的:如果在多個分離的查詢做

nid | path | count(path) | count(distinct path) 
123 |node/123| 412  |  123   
562 |node/562| 123  |  56 

工作正常,但不會做。

+0

對於給定的nid /路徑對,如何計數(不同路徑)與1不同? – Romain 2009-12-03 14:26:15

回答

1
select a.nid from node a join othertable b 
on b.path = concat("node/", a.nid) where type='book' 
0

你或許可以這樣做以下(nid可能需要額外的轉換成某種字符串類型):

SELECT * 
FROM OtherTable 
JOIN node ON path = CONCAT('node/', nid) 
WHERE type = 'book' 
0

感謝大家的幫助。基本上,問題是我不知道如何獲得nidnode/在一起,但concat幫助。 最終結果如下所示:

SELECT node.nid, accesslog.path, count(accesslog.hostname), count(distinct accesslog.hostname) 
    FROM `node`, `accesslog` 
    WHERE node.uid=1 
    AND node.type='raamat' 
    AND accesslog.path = CONCAT('node/', node.nid) 
GROUP BY node.nid