我已經創建了下面的表格:SQL SELECT從兩個表(友誼)語句
表1:tbl_Connections
USE [taaraf_db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbl_Connections](
[uc_Id] [int] IDENTITY(1,1) NOT NULL,
[uc_User] [nvarchar](50) NOT NULL,
[uc_Connection] [nvarchar](50) NOT NULL,
[uc_IsPending] [int] NOT NULL,
[uc_DateTime] [datetime] NOT NULL,
CONSTRAINT [PK_tbl_Connections] PRIMARY KEY CLUSTERED
(
[uc_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tbl_Connections] ADD CONSTRAINT [DF_tbl_Connections_uc_IsPending] DEFAULT ((1)) FOR [uc_IsPending]
GO
表#2:tbl_LiveStream
USE [taaraf_db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbl_LiveStreams](
[ls_Id] [int] IDENTITY(1,1) NOT NULL,
[ls_Story] [nvarchar](max) NOT NULL,
[ls_User] [nvarchar](50) NOT NULL,
[ls_Connection] [nvarchar](50) NOT NULL,
[ls_DateTime] [datetime] NOT NULL,
CONSTRAINT [PK_tbl_LiveStreams] PRIMARY KEY CLUSTERED
(
[ls_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
現在uc_User在tbl_Connections表示發起好友請求的用戶,並且uc_Connection代表對方。 相同的概念上第二個表(tbl_LiveStreams)
我想選擇一個cetrain用戶的所有新的串流應用,流媒體直播應該僅當用戶連接到對方特定用戶檢索(uc_IsPending = 0)
我有一個C#函數,採用下列參數:
public static DataTable GetAsyncLiveStream(string CurrentUser, int startAt, int howMany) { ... }
而且上述,一個DataTable應該返回所有新項目在流媒體直播了給定的C urrentUser(ls_User)如果上述要求是真實的。
這有點像Facebook的新聞提要,什麼是與朋友等發生...... 噢,tbl_LiveStream填充每當有人(ls_User)initates某種特定事件來(ls_Connection)。
我不確定我是否在這裏使我的生活複雜化,但這就是我所有的幫助和讚賞。
我要指出,我已經通過從tbl_LiveStream所有返回的記錄循環做到了這一點,做使用自定義類的函數.IsFriends()會去檢查數據庫中的友誼狀態和編程一些驗證填充一個DataTable ......我承認,這有點愚蠢。但我不知道如何做到這一點。
最後一件事, 我使用下面的查詢返回有限的結果:
SELECT * FROM (
SELECT row_number() OVER (ORDER BY) AS rownum, ls_Id
FROM)
AS A
WHERE A.rownum BETWEEN (@start) AND (@start + @rowsperpage)
請幫忙,謝謝您的時間。
編輯 我想指出,這就是我如何從tbl_Connections表中獲取誰是誰的朋友。
const string sql = "SELECT REPLACE((uc_Connection + uc_User), @CurrentUser, '') AS Connection " +
"FROM tbl_Connections Connection " +
"WHERE (@CurrentUser = uc_Connection) OR (@CurrentUser = uc_User)";
你應該爲此定義一個視圖,即你的'row_number()'包裝查詢使用。到目前爲止,你有什麼? –
我有我上面發佈的內容......現在就是這樣。我真的不知道如何開始。 – href
你能修改數據庫嗎?你的實際需求是什麼(如果你有兩個不同的表格,[有效] _exact_相同的結構,你可能有一張桌子拉出來)?如果你還沒有(SQL注入),你應該使用預處理語句,而不是連接字符串。表名不應以'tbl'爲前綴(如果_everything_前綴無意義),並且列不應該以縮短的表名作爲前綴(混淆,僅從一個表中選擇時沒有意義,並且您希望在從多個表中進行選擇時使用別名無論如何)。 –