Mysql несколько таблиц выбрать

0

У меня есть таблица, называемая, например, "node", из которой мне нужно вернуть значения, как показано:

SELECT nid FROM node WHERE type = "book"

После того, как я получу список значений, скажем:

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

Затем мне нужно взять эти значения и проверить другую таблицу, для строк, где столбец "путь" имеет значения как "node/123", "node/12451" (номера возвращенного предыдущего запроса) в одном присоединился запрос. Все было бы проще, если бы "дорожка" совпадала с простыми числами без "node/". А затем также подсчитайте количество идентичных i.e. 'node/123'. Конечный результат будет выглядеть следующим образом:

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

Работает нормально, если выполняется в нескольких раздельных запросах, но это не будет сделано.

  • 0
    Как count(distinct path) может отличаться от 1 для данной пары nid / path?
Теги:

3 ответа

1
select a.nid from node a join othertable b 
on b.path = concat("node/", a.nid) where type='book'
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
0

Возможно, вы можете сделать что-то вроде следующего (nid может потребовать дополнительного преобразования в некоторый тип строки):

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню