0

これが私がやろうとしていることです

WITH 
loc_id AS ( // take the result of the following select statement
SELECT l.location_id
  FROM mopdb.lulocation l
  WHERE (l.location_short = 'FOO'))

SELECT d.device
  FROM mopdb.ludevice d
  LEFT JOIN lulocation l ON (d.location_id = l.location_id)
  WHERE (d.location_id = loc_id) //use it here 
4

2 に答える 2

1

醜いですが:

   SELECT d.device
      FROM mopdb.ludevice d
      LEFT JOIN lulocation l ON d.location_id = l.location_id
      WHERE d.location_id = 
       (
        SELECT x.location_id
        FROM mopdb.lulocation x
        WHERE (x.location_short = 'FOO')
      )
于 2013-03-14T22:27:16.120 に答える
1

共通テーブル式を使用しようとしている場合はloc_id、サブクエリのように使用できるテーブルになるため、次のようにすることができます。

with loc_id as (
    select l.location_id
    from mopdb.lulocation l
    where (l.location_short = 'FOO')
) select
    d.device
from mopdb.ludevice d
left join lulocation l on d.location_id = l.location_id
where d.location_id = (select location_id from loc_id);

ただし、変数は SQL の方言ごとに異なる構文を持つため、使用している製品に大きく依存します。

于 2013-03-14T22:23:48.987 に答える