2013-04-29 2 views
1

UserInfo (PrimaryKey = UID) 및 Relationships (PrimaryKey = RID, ForeignKey = UID)의 두 테이블이 있습니다. 관계 데이터 예 :여러 쿼리를 사용하여 동적으로 Gridview 채우기 방법

 

| UID | RID | 

| 2 | 3 | 

| 3 | 4 | 

이제 일부에 정렬 수행 SQL 쿼리를 실행 한 후 관계 테이블 같은

"select RID from Relationships where UID= "value" 
UNION select UID from Relationships where RID= "value " 

값 = 3, i가 2 등의 정수 값을 얻는 경우, (4) (3 2 관계를 갖고 의미 4)

값 = 4, 결과 = 3 (4 만 갖는 3 관계)

경우 등이 resultin g 값은 UserInfo 테이블의 PrimaryKey 값입니다.

내가하고 싶은 일은 UID = 23,25,34 (이 값들은 첫 번째 SQL 쿼리의 결과이므로 값에 따라 매번 값과 값의 수가 변경됩니다 첫 번째 SQL 쿼리에 전달) 및 asp Gridview 바인딩하십시오. 이것에 대한

, 난 내가 루프를 사용

select * from UserInfo where UID= 2 

select * from UserInfo where UID= 4 

같은 여러 SQL 쿼리를 실행해야합니다 생각합니다.

내가 뭘해야한다고 생각 첫 번째 SQL 쿼리 결과를 통해 루프에 따라 두 번째 쿼리를 실행하고 결과 테이블을 다른 테이블 또는 datasource, 마침내 gridview 바인딩하는 결과를 저장하십시오. ...하지만 난 그것을 구현하는 방법을 모른다 ..

을이에 유래 내 첫 번째 질문 .. 내가 necessory 경우 문제를 더 clarrify하기 위해 최선을 다할 것입니다 ..

도움이 될 것이다 대단히 감사합니다 ..! 이것은 당신에게 두 테이블에서 & B. 존재하는 모든 레코드를 줄 것이다 :

+1

할 수 없습니까? SELECT * FROM userInfo WHERE UID IN ('UID 또는 쿼리 목록이 여기에옵니다.) ' –

+0

테이블을 조금 더 잘 설명 할 수 있습니까? 'UID'는'UserInfo'에서'UID'를 가리키는'Friendships'의 Foreign Key이고'FID'는 레코드의 Id입니다. 다른 사용자의 열은 무엇입니까? (나는 당신의 Friend 테이블이'ID | UserID1 | UserID2 | etc.'와 같은 것으로 가정합니다.) –

+0

저는 SQL 쿼리를 실제로 쿼리 문자열과 gridview 이름의 두 매개 변수를 사용하는 생성자로 전달합니다. 나는 꽤 많이 중첩 된 쿼리에 대해 빠져 있었다. 나는 전에 생각조차하지 못했지만 전체적으로 다음과 같이된다 : dbo.LID = "value" "), GridView1) 관계로부터 UID ="value "union UID를 선택하는 관계에서 RID를 선택하는 UserInfo에서 fillGrid ("select * 컴파일러는 내가 생각하는 논쟁의 수를 혼란스럽게 만듭니다. :(네 노력에 감사드립니다.) 중첩 된 쿼리를 사용하여 더 많은 연구를 할 것입니다. :) –

답변

1

당신은 SQL이

select a.RID from Friendships a inner join Relationships b on a.uid=b.uid 
where a.UID= "value" & b.RID="value" 
order by a.uid 

에 가입 사용할 수 있습니다 당신은을 실행할 수있는 루프 필요가 없습니다 More on SQL Joins

짧은 노트에

select * from UserInfo where UID IN (23, 25, 34); 

같은 단일 SQL 문에서 쿼리는 select * from table은 일반적으로 나쁜 관행입니다컬럼 이름으로 바꿀 수도 있습니다

+0

관계 테이블의 예제와 함께 질문. 만약 내가 내부 조인을 사용하면 UID = b.UID, UID = 3, 그것은 단지 두 번째 행을 가져올 것이므로 실제로는 관계가 존재하지만 결과는 2가 될 것이라고 가정합니다. 3과 4 사이이지만 반전 순서이므로 (3은 UID가 아닌 RID 필드에 있음) 이 문제를 해결하려면 3,4와 같은 각 관계에 대해 두 행을 추가해야합니다. 4,3 .. :( union query를 사용하면이 문제를 피할 수 있지만 결과와 함께 UserInfo 테이블에서 데이터를 가져 오는 방법을 알 수 없습니다. ( –

+0

@TilwinJoy 다양한 유형의 다른 조인 (INNER, LEFT, RIGHT, FULL). –

관련 문제