2

基本的に、私は画像だけを保持しているページにクエリを実行しようとしています。単一の画像を受信するには、tripID番号を入力してからROWID(複数の画像が存在する可能性があるため)を入力する必要があります。各画像がhtmlの対応する画像ボックスに表示されるまでループします。

このコードは機能していないようです(無効な列名'ROWID'を取得します)が、AND ROWID = '1'を削除すると、すべての画像とその行IDが次のように返されます。

ROWID      PHOTO
    1      32jjr3h2jh23hj4h32jh42ll23j42 
    2       HU8308DJAOID9ASIDJI32C89EE29

-

Select ROW_NUMBER() OVER (ORDER BY Photo ASC) AS ROWID, TBL_Photo.Photo
        From TBL_Photo
        left join TBL_TripDetails
        ON TBL_Photo.TripID=TBL_TripDetails.pkiTripID
        Where pkiTripID = '121' AND ROWID = '1'
4

1 に答える 1

5

WHERE句で列エイリアスを参照することはできません。サブクエリまたはCTEを使用する必要があります。

サブクエリの例:

SELECT x.rowid,
       x.photo
  FROM (SELECT ROW_NUMBER() OVER (ORDER BY p.photo) AS ROWID, 
               p.photo
          FROM TBL_PHOTO p
     LEFT JOIN TBL_TRIPDETAILS td ON td.pkitripid = p.tripid 
         WHERE td.pkiTripID = '121') x
 WHERE x.rowid = 1

CTEの例:

WITH example AS (
        SELECT ROW_NUMBER() OVER (ORDER BY p.photo) AS ROWID, 
               p.photo
          FROM TBL_PHOTO p
     LEFT JOIN TBL_TRIPDETAILS td ON td.pkitripid = p.tripid 
         WHERE td.pkiTripID = '121')
SELECT x.rowid,
       x.photo
  FROM example x
 WHERE x.rowid = 1

パフォーマンス

2つのオプションの間にパフォーマンスの違いはありませんが、WITH構文がすべてのデータベースでサポートされているわけではありません。

于 2010-11-18T18:56:59.010 に答える