2013-09-04 4 views
0

У меня есть две таблицы - ALPHA & BETA. Я использую результат запроса на BETA для внешнего запроса в ALPHA.использование внутренней последовательности запросов запроса запроса во внешнем результате запроса

SELECT a,b 
FROM alpha 
WHERE a IN(
    SELECT a 
    FROM beta 
    WHERE some_condition 
    ORDER BY c DESC 
); 

Теперь моя проблема заключается в том, что я должен поддерживать DESC ORDER в конечном итоге, но так как я не имею доступа к c в таблице alpha, я не в состоянии сделать результат отображения в желаемом Одер.

Есть ли способ использовать последовательность запросов внутреннего запроса во внешнем запросе. Я не могу изменить структуру любой из таблиц.

ответ

1

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

SELECT DISTINCT al.a, al.b 
FROM alpha al 
     INNER JOIN Beta be 
      ON al.a = be.a 
WHERE be. -- some condition 
ORDER BY be.c DESC 
0

Предложение order by в подзапросе не будет иметь никакого эффекта для вашего сценария.

Вместо рамки подзапроса вам нужна структура объединения. вам необходимо присоединиться к альфа-и бета-таблице, используя общее поле, после создания соединения все столбцы из альфа-и бета-таблиц доступны, и сортировка становится легкой.

Я попытался изменить ваш запрос в рамках объединения. SELECT alpha.a, b FROM alpha inner join beta on alpha. [Somefield] = beta. [Somefield] WHERE some_condition ORDER BY beta.c DESC;

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