#sql #oracle #join
Вопрос:
Получив эту проблему, в которой я использую максимальное значение для столбца, он возвращает мне номер. (В моих таблицах уже есть ограничения).
Фактический Возврат
КВЕАНО | CVENUMERO | CVEACCION |
---|---|---|
2021 | 7 | 4 |
2021 | 1 | 3 |
Что я хочу вернуть из TblACCION
КВЕАНО | CVENUMERO | CVEACCION | НАЗВАНИЕ CVEACCION Взято из tblACCION |
---|---|---|---|
2021 | 7 | 4 | ИМЯ ДЛЯ НОМЕРА 4 |
2021 | 1 | 3 | ИМЯ ДЛЯ НОМЕРА 3 |
Мой фактический запрос таков
SELECT * FROM ( SELECT cveano, cvenumero, max(cveaccion) as ultima FROM tblbitacoragf WHERE cveusuario = 1 GROUP BY cvenumero, cveano order by max(fechaaccion) desc ) WHERE ROWNUM <= 4
Я пробовал делать
INNER JOIN tblACCION ta USING (CVEACCION)
и в ИЗБРАННОМ
ta.descripcion AS accion
но я думаю, что что-то не так, потому что он всегда просит меня
- 00000 — «отсутствует правая скобка»
и я проверил наличие скобок, но в скобках недостатка нет.
Обновить
Комментарии:
1. вам не нужно «как» для псевдонима таблицы, необязательно указывать псевдоним столбца в предложении select. Заменить «tblACCION как ta» на «tblACCION ta».
2. Я изменил его после того, как этот пост был загружен (не работал), но в любом случае Thnxs :).
3. Значит, все решено ?
4. Нет, это не так 🙁 .
5. Какая у вас сейчас проблема? Что касается синтаксиса, то такой запрос в порядке вещей.
Ответ №1:
Как я понял, вы ищете что — то подобное.
SELECT * FROM ( SELECT t1.cveano, t1.cvenumero, max(t1.cveaccion) as ultima, max(t2.cveaccionName) as cveaccionName FROM tblbitacoragf t1 INNER JOIN tblACCION t2 ON t1.cveaccion = t2.cveaccion WHERE t1.cveusuario = 1 GROUP BY t1.cvenumero, t1.cveano order by max(t1.fechaaccion) desc ) WHERE ROWNUM <= 4
Также вы можете попробовать это.
SELECT abc.*, xyz.cveaccionName FROM ( SELECT cveano, cvenumero, max(cveaccion) as ultima FROM tblbitacoragf WHERE cveusuario = 1 GROUP BY cvenumero, cveano order by max(fechaaccion) desc ) abc INNER JOIN tblACCION xyz ON abc.ultima = xyz.cveaccion WHERE ROWNUM <= 4
Комментарии:
1. Оооо… Я понял это сейчас, мне нужно было максимизировать их обоих, и это сработало идеально, и мое соединение было Там, Где нужно, снизу. Действительно ценю это.
2. @RudyRosa Да. Вам нужно использовать
max
илиmin
, если вы используетеGroup By
. ТакжеJoin
следует включить «послеfrom
«, но «доwhere
«. Я также добавил альтернативное решение. Вы можете использовать то, что вам наиболее подходит.3. Отлично! Не знал, что псевдониму может быть присвоена целая скобка. но поправьте меня, если я ошибаюсь, abc-это псевдоним для select из tblbitacoragf и xyz из select или присоединиться к tblACCION ? Просто пытаюсь лучше понять второе решение.
4. @RudyRosa Да, Вы правы. abc -это подзапрос
ALIAS
. xyz — этоtable alias
изtblACCION
5. @RudyRosa Вы не можете получить доступ ко всем столбцам
tblbitacoragf
таблицы с помощьюabc
. Только столбцы и псевдонимы, определенные в подзапросе. Но вы можете получить доступ ко всем столбцамtblACCION
использованияxyz.