powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sql query
2 сообщений из 2, страница 1 из 1
sql query
    #32027269
kreont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так ... вот одна таблица - doc
-------------
DOCID DOCNAME
1 history
2 language
...
-------------
(DOCID уникален)

Вторая таблица - kword
---------------
DOCID KEYWORD
1 country
1 state
1 live
2 language
2 translation
...
-------------
(пара DOCID+KEYWORD уникальна)

Надо вывести все документы включающие 3 KEYWORDа 'document', 'language', 'lingual' все 3 в каждом документе ...
Как сделать ?

select d.DOCID, d.DOCNAME
from doc d, kword k
where d.DOCID = k.DOCID а дальше что?
...
Рейтинг: 0 / 0
sql query
    #32027273
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую,

Если я Вас правильно понял, то Вам необходимо вывести набор (DOCID, DOCNAME), содержащий только те документы,
для которых в таблице kword содержатся записи с заданными значениями поля KEYWORD.

Тогда вот возможные запросы:

\n-- Создаем переменные типа 'таблица' и наполняем их тестовыми данными
DECLARE @doc TABLE (DOCID int identity(1,1), DOCNAME varchar(200))
DECLARE @kword TABLE (DOCID int, KEYWORD varchar(200))

INSERT @doc (DOCNAME) VALUES ('history')
INSERT @doc (DOCNAME) VALUES ('language')

INSERT @kword VALUES (1, 'country')
INSERT @kword VALUES (1, 'state')
INSERT @kword VALUES (1, 'live')
INSERT @kword VALUES (2, 'language')
INSERT @kword VALUES (2, 'translation')
INSERT @kword VALUES (2, 'document')
INSERT @kword VALUES (2, 'lingual')



-- Вариант 1
SELECT DISTINCT d.DOCID, d.DOCNAME
FROM @doc d
INNER JOIN @kword k1
ON d.DOCID = k1.DOCID
INNER JOIN @kword k2
ON d.DOCID = k2.DOCID
INNER JOIN @kword k3
ON d.DOCID = k3.DOCID
WHERE k1.KEYWORD = 'document'
AND k2.KEYWORD = 'language'
AND k3.KEYWORD = 'lingual'

-- Вариант 2
SELECT DISTINCT d.DOCID, d.DOCNAME
FROM @doc d
WHERE exists(SELECT 1 FROM @kword k1
WHERE k1.KEYWORD = 'document'
AND k1.DocID = d.DocID)
AND exists(SELECT 1 FROM @kword k2
WHERE k2.KEYWORD = 'language'
AND k2.DocID = d.DocID)
AND exists(SELECT 1 FROM @kword k3
WHERE k3.KEYWORD = 'lingual'
AND k3.DocID = d.DocID)


Удачи
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sql query
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]