2014-12-22 5 views
-1

В sql я получил сценарий хотел бы добавить значение constant к одному из condition data из query также constant data, что мы собираемся добавить исходит из sub query. Грубый sql будет подобен этому (так как большинство данных sql конфиденциальны, я не могу поделиться фактическим запросом).Oracle - сложный SQL-запрос

SELECT * FROM test_table tt 
    INNER JOIN test_table_1 tt1 
    ON tt.id = tt1.id 
    WHERE TO_DATE(tt1.CONDITION_VALUE, 'yyyy-mm-dd') >= 
      TO_DATE('2011-08-25', 'yyyy-mm-dd') + (SELECT CONDITION_VALUE 
                FROM test_table tt 
                INNER JOIN test_table_1 tt1 
                ON tt.id = tt1.id 
                WHERE CONDITION_SEQUENCE='2') AND 
     CONDITION_SEQUENCE='1'. 

Издание является subselect возвращает набор data. Поэтому я получаю ошибку ORA-01427: single-row subquery returns more than one row.

Кроме того, что является способом устранения этой проблемы best.

Просто: сценарий - это то, что я хочу вычислить значения rows, исходя из значения из строки another, но одного и того же родительского объекта.

Насколько я понимаю, теперь joins вели себя как этот

obj1.data + [set of subquery data] 
    obj2.data + [set of subquery data] 
    .... 
    objN.data + [set of subquery data] 

Скорее я хочу, как

obj1.data + obj1.anotherData 
    obj2.data + obj2.anotherData 
    .... 
    objN.data + objN.anotherData 

Обновленный вопрос

ввода является дата покупки от: 2011-08-19 по: 2011-08-25, что я получу от UI

значение Таблица:

id | CONDITION_SEQUENCE | CONDITION_VALUE | 
    ------------------------|------------------ 
    1 | 1     | 6    | --- purchase date 
    2 | 1     | 4    | 
    3 | 2     | 2011-08-25  | --- stay start date 
    4 | 1     | 2011-11-25  | --- stay end date 
    -------------------------------------------- 

Но в дату покупки, я имеющий значение 6, которое я хочу add или subtract от stay start date. Где все condition_value принадлежит к одному родительскому объекту, что я буду определять ее родительской таблицы

Вывод: Я хочу, чтобы вычислить purchase date как 2011-08-25 (пребывание дата начала) + 6 (дата покупки) = 2011-08-19

+0

Где вы хотите добавить или в 'где condition' или в' column' – Exhausted

+0

@Exhausted В 'где condition' –

+3

Пожалуйста, измените свой вопрос и предоставить образцы данных и желаемые результаты. Ваш вопрос показывает нерабочий запрос и не объясняет, что вы пытаетесь сделать. –

ответ

1

чтобы сделать то, что вы, кажется, пытается сделать вы можете попробовать что-то вроде

SELECT * 
    FROM test_table tt 
    INNER JOIN test_table_1 tt1 
    ON tt.id = tt1.id 
    WHERE TO_DATE(tt1.CONDITION_VALUE, 'yyyy-mm-dd') >= 
      TO_DATE('2011-08-25', 'yyyy-mm-dd') + tt.CONDITION_VALUE AND 
     tt.CONDITION_SEQUENCE = '2' AND 
     tt1.CONDITION_SEQUENCE = '1' 

Лучший удачи.

+0

Привет, спасибо за ваше время, я получил некоторую идею из вашего ответа, соответственно, я попробую ' –

+0

Я не смог проверить ur решение, в основном, потому что моя проблема очень трудно объяснить, и я только что планировал использовать Java-решения, если вы не возражаете, можете присоединиться к чату –

+0

chat.stackoverflow.com/rooms/592/mysql-and-relational -databases или chat.stackoverflow.com/rooms/66379/oracle –

1

по моему пониманию, вы можете попробовать, как показано ниже,

SELECT tt.*,tt1.* FROM test_table tt 
    INNER JOIN test_table_1 tt1 
    ON tt.id = tt1.id 
    INNER JOIN 
test_table tt2 
on tt.id = tt2.id 
    and tt2.CONDITION_SEQUENCE='2' 
    WHERE TO_DATE(tt1.CONDITION_VALUE, 'yyyy-mm-dd') >= 
      (TO_DATE('2011-08-25', 'yyyy-mm-dd') + tt2.CONDITION_VALUE) 
AND tt.CONDITION_SEQUENCE='1' 
+0

спасибо за ваш ответ, позвольте мне попробовать, также я пытаюсь избежать дополнительного 'внутреннего соединения' внутри' sub query' –

+0

@Suganthan Я думаю, что это может быть эффективным способом вместо того, чтобы запрашивать каждый раз на 'where' filter – Exhausted

+0

, позвольте мне проверить ... Я получу вас с некоторым временем ... в db, у меня есть еще несколько других проблем, которые блокируют меня –

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