1

3 つのテーブルのデータを結合できません。

これは、不動産会社の匿名のショッピング カートです。inmuebles テーブルには、プロパティの詳細が保持されます。視聴したい人がいる場合は、asp.net セッション ID を使用して temppropertylist テーブルにレコードを作成し、anonymouscart テーブルに関心のあるプロパティのレコードを追加します。

これを gridview コントロールに表示しているので、再バインドするときに、3 つのテーブルから情報を取得し、すべてのプロパティ データを表示し、各プロパティが表示用に選択されているかどうかを示すクエリが必要です。これを行うには、inmuebles テーブルの各レコードに結合する anonymouscart からの propertyid または null のいずれかを使用するだけで十分です。これを使用してチェックボックスを切り替えることができます。

私が見つけたのは、元のクエリが temppropertylist テーブル内のすべての関連レコードの匿名カートから情報を取得していたため、結合で sessionid を使用してそれをフィルタリングしようとしていましたが、関連がある inmuebles レコードのみを表示するようになりました匿名カートに記録します。

Stackoverflow で可能なすべてのリストを読みましたが、何が間違っているのか理解できません。

CREATE TABLE [dbo].[anonymouscart](
[Id] [int] IDENTITY(1,1) NOT NULL,
[temppropertylist_id] [int] NOT NULL,
[timestamp] [datetime2](7) NOT NULL,
[propertyid] [int] NULL
) ON [PRIMARY]

Id  temppropertylist_id timestamp                     propertyid
40  38                  2013-09-24 08:24:00.0772687 2
39  37                  2013-09-24 08:03:56.1163987 1

CREATE TABLE [dbo].[temppropertylist](
[ID] [int] IDENTITY(1,1) NOT NULL,
[sessionID] [nvarchar](50) NULL,
[userID] [int] NULL,
[timestamp] [datetime2](7) NOT NULL
) ON [PRIMARY]

ID  sessionID                   userID  timestamp
37  jgyo5i4vne35bcolow23je1q    NULL      2013-09-24 08:02:29.1129679
38  uuoawmav4jhi3hy3g3v4vr3o    NULL      2013-09-24 08:23:58.8604375

CREATE TABLE [dbo].[Inmuebles](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](99) NULL,
[tipodemanda] [nvarchar](10) NULL,
[Descripcioni] [nvarchar](max) NULL,
[PrecioVenta] [int] NULL,
[Imagen] [nvarchar](255) NULL,
[onhold] [bit] NOT NULL,
) ON [PRIMARY]

私のクエリ:

SELECT  inmuebles.title
    ,   inmuebles.Descripcioni
    ,   inmuebles.ID
    ,   inmuebles.PrecioVenta
    ,   inmuebles.imagen
    ,   MIN(anonymouscart.propertyID) AS propertyID
FROM inmuebles
FULL OUTER JOIN anonymouscart ON Inmuebles.ID = anonymouscart.propertyID
FULL OUTER JOIN temppropertylist ON anonymouscart.temppropertylist_id = temppropertylist.ID 
    AND (temppropertylist.sessionid = 'uuoawmav4jhi3hy3g3v4vr3o')
WHERE tipodemanda = 'venta'
    AND onhold = 0
GROUP BY
        inmuebles.title
    ,   inmuebles.Descripcioni
    ,   inmuebles.ID
    ,   inmuebles.PrecioVenta
    ,   inmuebles.imagen

これは以下を返します:

title        Descripcioni     id PrecioVenta imagen propertyid
'Two for One' 'This is a ....' 2  110000     NULL   2

しかし、私が欲しいのは、プロパティ ID が null の inmuebles テーブルのすべてのレコードです。

これは、inmuebles テーブルのデータです。

title           Descripcioni         id    PrecioVenta   imagen                     onhold  tipodemanda
'Casa Bodega',  'This is a...',     1,   11000,        '1_27152256.jpg',0,              'venta'
'Two for One',  'This is a...',   2,     110000,          NULL,             0,         'venta'
4

1 に答える 1