Смущающе легкий вопрос SQL - PullRequest
1 голос
/ 19 декабря 2009

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

Можно ли написать запрос, который выглядит примерно так:

select t.name 
  from (select * 
          from mystoredproc(1,2,3) as t) 
 where t.name = 'foobar'

Две проблемы с вышеуказанным запросом:

1) Прежде всего, вышеприведенное утверждение не работает. Мой движок БД (mySQL) жалуется:

ОШИБКА 1054 (42S22): неизвестный столбец 't.name' в 'списке полей'

2) Я хочу использовать возвращенную таблицу t в САМОМ СОЕДИНЕНИИ. Однако я не хочу чтобы вызвать mystoredproc (...) опять же, потому что это ОЧЕНЬ дорогой звонок.

Кто-нибудь знает, как исправить эти проблемы?

Кстати, несмотря на то, что я использую mySQL (пока), я бы предпочел, чтобы любой предложенный фрагмент SQL был независимым от БД (т.е. ANSI SQL)

1 Ответ

11 голосов
/ 19 декабря 2009

Заменить ) as t) на ) t, как в

select t.name from (select * from mystoredproc(1,2,3)) t where t.name = 'foobar'

Для вашей второй проблемы: введите результат из mystoredproc во временную таблицу и SELECT из нее, тогда вы можете сделать самостоятельное объединение без хлопот.

...