powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сравнение записей в одной таблице по одному столбцу
9 сообщений из 9, страница 1 из 1
Сравнение записей в одной таблице по одному столбцу
    #39604674
bitocheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, столкнулся с задачей. Условие.
Есть таблица с записями и датой создания, каждая запись ссылается на промежуточную таблицу... понимаю сложно, пример:

таблица1:
ID, DOCTYPE, NAME, DOCDATE
и промежуточная таблица с ссылкой на запись, вида:
DOCTYPE, ID, BASEID, где baseid ссылка на документ.

В таблице хранятся документы разных типов, вопрос... А как отобрать записи где дата ссылающихся документов допустим равна ?

Пример,

таблица1(PR, 1, Bla-bla, 20.02.2018), (2, TR, Bla-bla, 21.02.2018)

промежуточная ( PR, 1, 2)
...
Рейтинг: 0 / 0
Сравнение записей в одной таблице по одному столбцу
    #39604683
Загги
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bitochegгде дата ссылающихся документов допустим равна ?
Равна чему?
...
Рейтинг: 0 / 0
Сравнение записей в одной таблице по одному столбцу
    #39604689
bitocheg,

select *
from промежуточная п
join таблица1 т on т.ID = п.ID
join таблица1 тт on тт.ID = п.BASEID
and тт.DOCDATE = т.DOCDATE
...
Рейтинг: 0 / 0
Сравнение записей в одной таблице по одному столбцу
    #39604699
bitocheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходил мимо .....bitocheg,

select *
from промежуточная п
join таблица1 т on т.ID = п.ID
join таблица1 тт on тт.ID = п.BASEID
and тт.DOCDATE = т.DOCDATE

Спасибо сработало, я просто еще очень не опытен(
...
Рейтинг: 0 / 0
Сравнение записей в одной таблице по одному столбцу
    #39604714
DKbru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bitocheg,

старый добрый синтаксис
Код: plsql
1.
select * from "таблица1" t1, "пром_табл" t2 where  t1.ID=t2.BASEID and t1.DOCDATE=t2.DOCDATE



или ANSI синтаксис

Код: plsql
1.
select * from "таблица1" t1 join "пром_табл" t2 using(DOCDATE) where t1.ID=t2.BASEID 
...
Рейтинг: 0 / 0
Сравнение записей в одной таблице по одному столбцу
    #39604718
DKbru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bitocheg,

авторjoin таблица1 т on т.ID = п.ID
Данное условие сработало? По описанию не должно было, так как BASEID - внешний ключ на ID таблица1, а не ID=ID
...
Рейтинг: 0 / 0
Сравнение записей в одной таблице по одному столбцу
    #39604735
bitocheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DKbrubitocheg,

авторjoin таблица1 т on т.ID = п.ID
Данное условие сработало? По описанию не должно было, так как BASEID - внешний ключ на ID таблица1, а не ID=ID

да сработало, как не знаю..:) описание вы правильно поняли... И у вас в примере вы сравниваете две таблицы, так и я могу, а все документы хранятся в одной таблице :)
...
Рейтинг: 0 / 0
Сравнение записей в одной таблице по одному столбцу
    #39604753
DKbru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bitocheg,

ага я вас понял. А то что-то затупил, немного не понял условие задачи
bitochegА как отобрать записи где дата ссылающихся документов допустим равна ?
Но всё равно непонятно, почему проходил мимо ..... так написал.

Там просто доп условие - сравнение одной и той же таблицы
Код: plsql
1.
2.
3.
select * from "таблица1" t1
join "таблица1" tt1 using(ID,DOCDATE)
join "пром_табл" t2  on t1.ID=t2.BASEID 



Старый синтаксис:
Код: plsql
1.
select * from "таблица1" t1, "таблица1" tt1 "пром_табл" t2 where t1.ID=tt1.ID and t1.DOCDATE=tt1.DOCDATE and t1.ID=t2.BASEID



Как-то так вроде.
...
Рейтинг: 0 / 0
Сравнение записей в одной таблице по одному столбцу
    #39604788
bitocheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DKbrubitocheg,

ага я вас понял. А то что-то затупил, немного не понял условие задачи
bitochegА как отобрать записи где дата ссылающихся документов допустим равна ?
Но всё равно непонятно, почему проходил мимо ..... так написал.

Там просто доп условие - сравнение одной и той же таблицы
Код: plsql
1.
2.
3.
select * from "таблица1" t1
join "таблица1" tt1 using(ID,DOCDATE)
join "пром_табл" t2  on t1.ID=t2.BASEID 



Старый синтаксис:
Код: plsql
1.
select * from "таблица1" t1, "таблица1" tt1 "пром_табл" t2 where t1.ID=tt1.ID and t1.DOCDATE=tt1.DOCDATE and t1.ID=t2.BASEID



Как-то так вроде.

Ага и ваш пример сработал, большое спасибо, что разжевали новичку )
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сравнение записей в одной таблице по одному столбцу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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