2016-09-06 1 views
1

을 형성 select selecet statments를 사용합니까? (가입 또는 다른 통계)? * 서브 제목의 Arraylist를 포함하는 "Subject"클래스가 있습니다.가져 오기 목록은 내가 두 테이블을 내 DB에서 DB

보기의 결과는 다음과 같이 somthings 할 필요가 :

***************************** 
subject * sub-subject * dep * 
***************************** 
sub_1 * sub sub1 * 1 * 
     ********************* 
     * sub sub2 * 2 * 
***************************** 
sub_2 * sub sub 4 * 1 * 
***************************** 
sub_3 * sub sub 3 * 1 * 
     ********************* 
     * sub sub 5 * 2 * 
     ********************* 
     * sub sub 6 * 2 * 
***************************** 
+0

일부 샘플 테이블 데이터와 예상되는 결과를 추가하십시오. – jarlh

+0

"일부 샘플 테이블 데이터"란 무엇입니까? 보기를보고 싶니? – foo

+0

나는 가장 빠르고 가장 좋은 방법을 사용하고 싶다. – foo

답변

1

다음 쿼리 사용 :

SELECT 
CASE WHEN t.id = (SELECT TOP 1 id -- Sub query 
FROM Subsubjects t3 
WHERE t3.subject_id = t.subject_id 
ORDER BY t3.id) THEN q.description 
ELSE '' 
END AS Subjects, t.description AS Subsubjects, t.department_id 
FROM Subsubjects t 
LEFT JOIN subjects q ON q.id = t.subject_id 
ORDER BY t.id 

을 그리고 다음과 같이 예상 된 데이터를 반환합니다 :

***************************** 
    subject * sub-subject * dep * 
    ***************************** 
    sub_1 * sub sub1 * 1 * 
    ********************* 
      * sub sub2 * 2 * 
    ***************************** 
    sub_2 * sub sub 4 * 1 * 
    ***************************** 
    sub_3 * sub sub 3 * 1 * 
    ********************* 
      * sub sub 5 * 2 * 
    ********************* 
      * sub sub 6 * 2 * 
***************************** 

다음은 우리가 SQL 쿼리 목록 개체를 처리하는 방법을 예입니다

public List<Product> GetAllProducts() //GetAllProducts() is a list-type method 
{ 
    Query = "SELECT * FROM Products"; 

    Command = new SqlCommand(Query, Connection); 

    Connection.Open(); 

    Reader = Command.ExecuteReader(); 

    List<Product> products = new List<Product>(); //Created a list 

    while (Reader.Read()) 
    { 
     Product product = new Product(); //Created an object from the class 
     product.ProductId = Convert.ToInt32(Reader["ProductID"]); 
     product.CategoryId = Convert.ToInt32(Reader["CategoryID"]); 
     product.ProductName = Reader["ProductName"].ToString(); 
     product.Details = Reader["Details"].ToString(); 
     product.Price = (double)Reader["Price"]; 
     product.Stock = Convert.ToDouble(Reader["Stock"]); 

     products.Add(product); //Finally bind the object with the list 
    } 

    Reader.Close(); 
    Connection.Close(); 

    return products; 
} 
+0

내 데이터 테이블로 대답을 변환 할 수 있습니까? 내 데이터와 함께 사용하는 방법을 모르겠다 ... – foo

+0

확인. 나는 샘플을 제공하고있다. 이것을 확인하십시오 : http : // stackoverflow.com/questions/39072754/hide-the-same-cells-in-sql-server-result/39072953 # 39072953 –

+0

여전히이 하드 코드를 변환하는 방법을 이해하지 못합니다 ... 나를 변환 할 수 있습니까? – foo

0

SELECT s.id, ss.description, ss.department_id FROM `subjects` AS s INNER JOIN `subSubjects` AS ss ON s.id=ss.subject_id

W3 Join에서 봐 가지고, 이것은 당신이 내부 조인과 다른 생성의 기본 사항에 대해 알아야 할 모든 설명합니다 일종의 SQL 문.

+0

그 후 나는 테이블 whith의 제목을 대상의 목록으로 변환하는 객체를 얻는다. 내부의 subSubjects) shuold 그룹을 사용합니까? – foo

+0

테이블 – foo

+0

으로 질문을 업데이트했습니다. 필요한 데이터를 제공하도록 SQL을 변경했습니다. 조인을 제외하고 원하는 모든 열 이름을 변경할 수 있습니다. 모든 열 이름 앞에 s를 붙여야합니다. 또는 ss. 각각의 테이블 이름에 대해 – Taacoo

0

모든 하위 주제가 항상 주제와 관련된 경우 내부 결합을 시도해야합니다 ().다른 외부 결합을 시도하십시오.

SELECT as Subject, 
     subSubjects.Description as SubSubject, 
     department_id as Dep 
FROM subSubjects 
INNER JOIN Subjects 
ON Subjects.id=SubSubjects.subject_id 
ORDER BY Subjects.description 
+0

예상 결과를 반환하지 않습니다 ... – foo

+0

무엇이 반환합니까? – Zeina

+0

subject_desctiption이있는 테이블 sub_subject 설명 및 dep,하지만 동일한 subject ID를 가진 두 개의 sub_subject가있는 경우이 테이블에서 나는 그 중 하나만 가져 왔습니다 ... – foo

관련 문제