3

私は次のクエリを持っています

SELECT *
FROM
              ( select distinct
                      r1.rep_code,
                      r1.contact_id,
                      c1.Name,
                      e1.year_num,
                      e1.period_num
                   from
                      entry e1
                         join rep r1 ON e1.rep_code = r1.rep_code
                            join contact c1 on r1.contact_id = c1.contact_id
                   where
                          e1.entry_type = 'SJOB'
                      and e1.age = 0 )

3行目でエラーが発生し続けます

Token unknown - line 3, char 15
select

ちなみに、interbaseIBConsoleを使用しています。

4

5 に答える 5

3

どうやら、Interbaseは派生テーブルをサポートしていませんSELECT FROM (SELECT))。または、少なくとも、使用しているバージョン(Interbaseを使用していないので、しばらく経っています)。この機能はFirebird2.0で追加されました。ここには2つのオプションがあります。

  • SELECT FROM (SELECT)(派生テーブル)を使用しないようにアプローチを変更します

    また

  • Firebirdにアップグレードする

そのための自律性がある場合は、オプション#2を確実に選択する必要があります。

ところで、Firebirdでは、派生テーブルのエイリアスを宣言する必要はありませんが、派生テーブルを他のテーブル/派生テーブルと結合する場合は、エイリアスを宣言する必要があります。

于 2011-06-20T14:52:03.260 に答える
3

InterBaseは派生テーブルをサポートしていません。ただし、このクエリにはメリットがないため、削除してください。

              select distinct
                  r1.rep_code,
                  r1.contact_id,
                  c1.Name,
                  e1.year_num,
                  e1.period_num
               from
                  entry e1
                     join rep r1 ON e1.rep_code = r1.rep_code
                        join contact c1 on r1.contact_id = c1.contact_id
               where
                      e1.entry_type = 'SJOB'
                         and e1.age = 0 

...この場合、派生テーブルと同じ結果が得られます。

于 2011-06-21T15:39:51.780 に答える
2

サブクエリにエイリアスを指定する必要があります。

SELECT *
FROM
          ( select distinct
                  r1.rep_code,
                  r1.contact_id,
                  c1.Name,
                  e1.year_num,
                  e1.period_num
               from
                  entry e1
                     join rep r1 ON e1.rep_code = r1.rep_code
                        join contact c1 on r1.contact_id = c1.contact_id
               where
                      e1.entry_type = 'SJOB'
                  and e1.age = 0 ) AS tbl
于 2011-06-20T08:38:07.577 に答える
0
SELECT *
FROM
              ( select distinct
                      r1.rep_code,
                      r1.contact_id,
                      c1.Name,
                      e1.year_num,
                      e1.period_num
                   from
                      entry e1
                         join rep r1 ON e1.rep_code = r1.rep_code
                            join contact c1 on r1.contact_id = c1.contact_id
                   where
                          e1.entry_type = 'SJOB'
                      and e1.age = 0 ) AS TABLE1
于 2011-06-20T08:39:47.800 に答える
0

このエラーが発生しました:

#1248-すべての派生テーブルには独自のエイリアスが必要です

次のようなものを試してください:

SELECT *
FROM
              ( select distinct
                      r1.rep_code,
                      r1.contact_id,
                      c1.Name,
                      e1.year_num,
                      e1.period_num
                   from
                      entry e1
                         join rep r1 ON e1.rep_code = r1.rep_code
                            join contact c1 on r1.contact_id = c1.contact_id
                   where
                          e1.entry_type = 'SJOB'
                      and e1.age = 0 ) AS entries
于 2011-06-20T08:40:37.483 に答える