Хорошо, так что я собираю путь, чтобы выбрать версию конкретного романа:Выбор первой строки из многих SQL присоединяется
SELECT Catalog.WbsId, Catalog.Revision, NovelRevision.Revision
FROM Catalog, BookInCatalog
INNER JOIN NovelMaster
INNER JOIN HasNovelRevision
INNER JOIN NovelRevision
ON HasNovelRevision.right = NovelRevision.obid
ON HasNovelRevision.Left=NovelMaster.obid
ON NovelMaster.obid = BookInCatalog.Right
WHERE Catalog.obid = BookInCatalog.Left;
Это возвращает все изменения, которые находятся в романе Мастера для каждого Новый мастер, который находится в каталоге.
Проблема в том, что я хочу только ПЕРВЫЙ пересмотр каждого нового мастера в каталоге. Как мне это сделать? О, и кстати: мой вкус sql ковыляет, как и многие другие, тем, что он не поддерживает функцию LIMIT.
**** **** UPDATE
Таким образом, используя ответ 1 в качестве руководства я модернизировал свой запрос к этому:
SELECT Catalog.wbsid
FROM Catalog, BookInCatalog, NovelVersion old, NovelMaster, HasNovelRevision
LEFT JOIN NovelVersion newRevs
ON old.revision < newRevs.revision AND HasNovelRevision.right = newRevs.obid
LEFT JOIN HasNovelRevision NewerHasNovelRevision
ON NewerHasNovelRevision.right = newRevs.obid
LEFT JOIN NovelMaster NewTecMst
ON NewerHasNovelRevision.left = NewTecMst.obid
WHERE Catalog.programName = 'E18' AND Catalog.obid = BookInCatalog.Left
AND BookInCatalog.right = NewTecMst.obid AND newRevs.obid = null
ORDER BY newRevs.documentname;
Я получаю ошибку на четвертой строке: " «.„старая версия“: недопустимый идентификатор
рЕШЕНИЕ Ну, я должен был пойти в другой форум, но я получил рабочий раствор:
select nr1.title, nr1.revision
from novelrevision nr1
where nr1.revision in (select min(revision) from novelrevision nr2
where nr1.title = nr2.title)
Таким образом, это решение использует JOIN, упомянутое OA, вместе с ключевым словом IN, чтобы соответствовать его ревизии.
так какой вкус? – Unreason
sql * plus 10.2 для Oracle – IcedDante