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'