Проблема SQL-запроса (Oracle) - PullRequest
1 голос
/ 21 сентября 2011

У меня есть запрос, который выбирает либо неделю 1, либо неделю 2, либо и то и другое, если доступно, а затем мне нужно найти способ отображения только результатов недели 1, но я знаю, какие из них доступны для обеих недель.

Вот мой запрос, который может помочь объяснить

select *
from table1 t1
where t1.location = 'VH' 
and (t1.week = '46' or t1.week = '47');

Это дает мне следующие результаты

week    location
46      VH209A
46      VH209B
46      VH20B
46      VH20C
47      VH209B
47      VH20A
47      VH20C

Я хочу показать только эти результаты

week    location
46      VH209A
46      VH209B
46      VH20B
46      VH20C

Но я хочу знать, какие записи также доступны на следующую неделю, т.е. эти

week     location
47       VH209B
47       VH20C

Так что мой желаемый результат будет что-то вроде

week     location    2weeks
46       VH209A        N
46       VH209B        Y
46       VH20B         N
46       VH20C         Y

Надеюсь, это имеет смысл?

Есть идеи, как мне получить желаемый результат?

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011
SELECT
  t1.week
  , t1.location
  , CASE WHEN t2.location is not null THEN 'Y'
         ELSE 'N'
    END AS hasmore
FROM table1 t1
LEFT JOIN (SELECT DISTINCT location FROM table1 WHERE week = '47') t2
  ON (t1.location = t2.location)
WHERE t1.location = 'VH' 
  AND t1.week = '46';
0 голосов
/ 21 сентября 2011

Рассматривали ли вы использовать INNER JOIN, например, LEFT или RIGHT JOIN?При этом вы можете получить доступ к данным из других таблиц, которые связаны с вашей таблицей с теми же данными.

Я ничего не знаю о структуре вашей базы данных, но я бы разделил несколько данных на несколько таблиц.При этом я бы запустил запрос с Joins в них.

Например,

select * from table1 LEFT JOIN table2.withdatajoinedtotable1 ON table2.week = table1.week WHERE table2.2weeks = 'Y'

Если вы разделите свои данные в нескольких таблицах, вы можете получить к ним доступ с помощью JOINS.

Надеюсь, это поможет.

Узнайте больше о JOINS на SQL JOINS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...