View Full Version : نمایش دو جدول در یک DataList
mayamz
دوشنبه 28 شهریور 1390, 12:35 عصر
سلام به همه دوستان
من میخوام در یک DataList نامی که در جدول Table_1 است پر شود و در همون DataList از جدول Table_2 فیلد Discription در داخل RadioButton پر بشه در ضمن ID جدول Table_1 در Table_2 خورده
در واقع من میخوام نام جدول Table_1 نمایش داده بشه و بعد Description جدول دوم و به همین ترتیب
چه جوری باید این کار را انجام بدم؟؟؟
hjran abdpor
دوشنبه 28 شهریور 1390, 14:45 عصر
با سلام.
باید از پیوند ، inner join استفاده کنید البته اگه کلید اصلی و خارجی را تعریف کرده باشد در هر در جدول مورد نظر.
مثال :
SELECT Users.UserName _ FROM Requests INNER JOIN Users ON Requests.UserName = Users.UserName
mayamz
دوشنبه 28 شهریور 1390, 14:57 عصر
ممنون دوست عزیز
ولی inner join یک مشکل دره اونم این هستش که به ازای هر رکورد در جدول Table_2 یک رکورد از جدول Table_1 میاره برای مثال اگر در جدول اول وارد کرده باشیم 1 و 2 در جدول دوم وارد کرده باشیم 3 و 4 و 5 و 6 با فرض اینکه ID جدول اول برای دورکورد جدول دوم و ID دوم جدول اول برای دو رکورد آخر جدول دوم خرده باشد نشان میدهد 1-3 و 1-4 و 2-5 و 2-6
من میخوام اینطوری نمایش داده بشه 1 - 3 - 4 و 2 - 5 - 6 یعنی به ازای هر رکورد در جدول اول تمام زیر مجموعه های بدون تکرار جدول اول نمایش داده بشود
hjran abdpor
دوشنبه 28 شهریور 1390, 15:04 عصر
دقیقا نمیدونم کدوم است یا Left join Right hoin است . سرچ کنی راحت پیدا میکنید.
mayamz
دوشنبه 28 شهریور 1390, 15:15 عصر
این کارو هم انجام دادم بازهم نشد
A.S.Roma
دوشنبه 28 شهریور 1390, 16:08 عصر
شما می خواهید یک رابطه ی 1 به چند را در یک سطر نشون بدید. دستورات زیر رو اجرا کنید ببینید منظورتون اینه :
DECLARE @table1ID INT
DECLARE @table1Title NVARCHAR(256)
DECLARE @table2Description NVARCHAR(256)
DECLARE @finalDesc NVARCHAR(MAX)
CREATE TABLE #table1 (ID INT IDENTITY , [Title] NVARCHAR(256))
CREATE TABLE #table2 (ID INT IDENTITY , [table1ID] INT , [Description] NVARCHAR(256))
CREATE TABLE #result (Title NVARCHAR(256) , [Description] NVARCHAR(256))
INSERT INTO #table1 VALUES ('test1' )
INSERT INTO #table1 VALUES ('test2' )
INSERT INTO #table2 VALUES ( 1, 'Desc1')
INSERT INTO #table2 VALUES ( 1, 'Desc2')
INSERT INTO #table2 VALUES ( 2, 'Desc1')
INSERT INTO #table2 VALUES ( 2, 'Desc2')
INSERT INTO #table2 VALUES ( 2, 'Desc3')
INSERT INTO #table2 VALUES ( 2, 'Desc4')
SELECT * FROM #table1 INNER JOIN #table2 ON #table1.ID = #table2.table1ID
DECLARE tbl1Test CURSOR FOR
SELECT * FROM #table1
OPEN tbl1Test
FETCH NEXT FROM tbl1Test
INTO @table1ID , @table1Title
WHILE @@FETCH_STATUS = 0
BEGIN
SET @finalDesc = ''
DECLARE tbl2Test CURSOR FOR
SELECT [Description] FROM #table2 WHERE table1ID = @table1ID
OPEN tbl2Test
FETCH NEXT FROM tbl2Test
INTO @table2Description
WHILE @@FETCH_STATUS = 0
BEGIN
SET @finalDesc = @finalDesc + ', ' + @table2Description
FETCH NEXT FROM tbl2Test
INTO @table2Description
END
INSERT INTO #result( Title, Description ) VALUES ( @table1Title , @finalDesc )
CLOSE tbl2Test
DEALLOCATE tbl2Test
FETCH NEXT FROM tbl1Test
INTO @table1ID , @table1Title
END
CLOSE tbl1Test
DEALLOCATE tbl1Test
SELECT * FROM #result
DROP TABLE #table1
DROP TABLE #table2
DROP TABLE #result
اگر تعداد داده هاتون خیلی زیاد باشه RUNشدن این مدل اسکریپت ها زمانبر خواهد شد.
mayamz
دوشنبه 28 شهریور 1390, 16:51 عصر
درسته دوست عزیز باید یک tempTable بسازم ممنون
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.