我有一个表,例如“node”,我需要从中返回值,如下所示:
SELECT nid FROM node WHERE type = "book"
获得值列表后,请说:
|**nid**|
|123|
|12451|
|562|
|536|
然后我需要获取这些值,并检查另一个表,其中列'path'的值为“node / 123”,“node / 12451”(在先前的请求中返回的数字)在一个已加入的请求中。如果collumn'path'具有简单的数字,而没有'node /',那么这一切都会更容易。 然后还计算相同的数量,即返回的'node / 123'。 最终结果如下:
nid | path | count(path) | count(distinct path)
123 |node/123| 412 | 123
562 |node/562| 123 | 56
如果在多个单独的查询中完成,则可以正常工作,但这样做不会。
答案 0 :(得分:1)
select a.nid from node a join othertable b
on b.path = concat("node/", a.nid) where type='book'
答案 1 :(得分:0)
您可以执行以下操作(nid
可能需要额外转换为某种字符串类型):
SELECT *
FROM OtherTable
JOIN node ON path = CONCAT('node/', nid)
WHERE type = 'book'
答案 2 :(得分:0)
谢谢大家的帮助。基本上,问题是我不知道如何将nid
和node/
放在一起,但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