2015-03-06 4 views
0

У меня есть таблица tags, и я также хочу, чтобы рассчитывать из таблицы questions все строки, которые имеют в своей колонке tagstag имя LIKE из базы данных tags.Как запросить две таблицы в одном запросе

Объединить эти два запроса я имею в виду:

SELECT * FROM tags WHERE 1 SELECT COUNT(*) FROM `questions` WHERE `tags` 
    LIKE '%(the tag column from tags table)%' 
+0

использовать внутреннее соединение – mstbaum

+1

Я бы посоветовал прочитать это http://www.akadia.com/services/sqlsrv_subqueries.html или https://technet.microsoft.com/en-us/library/ms189575%28v=sql .105% 29.aspx Они подробно описаны и приводят хорошие примеры – tgo

ответ

0
SELECT t.name, Count(*) FROM tags t 
join questions q on t.tag_id = q.tag_id 
Where t.name like '%(the tag column from tags table)%' 
group by t.name 

Если вы ищете Batches of SQL Statements

то вы можете сделать что-то подобное, поставив ; на конец первого запроса

SELECT * FROM `tags` WHERE 1 ; 
SELECT COUNT(*) FROM `questions` WHERE `tags` 
LIKE '%(the tag column from tags table)%' 
+0

Ошибка синтаксиса для q.COUNT (*) ... – jarlh

+0

@jarlh: Благодарим за внимание. я отредактировал ответ –

0

Вы должны иметь по крайней мере одно поле в общем, использовать его, чтобы связать таблицы:

SELECT t.name,q.COUNT(*) FROM questions q, tags t WHERE `tags` 
LIKE t.name and q.tag=t.name; 
+0

Ошибка синтаксиса для q.COUNT (*) ... – jarlh

0

Немного непонятно, в чем вопрос, но это то, что я думаю. Выбрать все строки из таблицы тегов, и для каждого тега также подсчитать количество вхождений в вопросе таблице:

select tags.*, 
     (select count(*) from question 
     where question.tags like '%' || tags.tag || '%') 
from tags 

|| является ANSI SQL для CONCAT. Некоторые продукты dbms имеют свои собственные способы, например. concat(str1, str2).

Смежные вопросы