홈>
학교 프로젝트를하고 있습니다
밴드의 모든 정보를 얻고 싶습니다. 잘 작동합니다. 내가 장르에 도착할 때까지. 밴드는 여러 장르를 가질 수 있고 그 반대도 가능하기 때문에 조금 특별합니다.
그래서 SQL에는 테이블 밴드, 테이블 장르 및 테이블 Band_Genre가 있습니다. 내부 조인을하면
SELECT *
FROM Band
INNER JOIN Band_Genre
ON Band.ID = Band_Genre.BandID
SQL에서는 모든 것이 잘 작동하지만 그 문장으로 두 번째 독자를 시도하면 null을 반환합니다.
그러나 내가 지금하고 싶은 것은 ID가 아닌 장르 자체로 데이터 그리드를 채우는 것입니다. 그래서 내가 생각하는 것은 Inner join에서 ID를 가져 와서 Genre.Name에 연결해야한다는 것입니다.아마도 조금 멀지 만 누군가가 이미 ID를 ObservableCollection에 가져올 수 있다면 기쁠 것입니다. 데이터 그리드에 장르 : 1, 3이 표시됩니다.
미리 감사합니다
C#
//Property
private ObservableCollection<Genre> genres;
public ObservableCollection<Genre> Genres
{
get { return genres; }
set { genres = value; }
}
//Method
public static ObservableCollection<Band> GetBands()
{
ObservableCollection<Band> list = new ObservableCollection<Band>();
try
{
string provider = ConfigurationManager.ConnectionStrings["ConnectionString"].ProviderName;
string connectionstring = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
DbConnection con = DbProviderFactories.GetFactory(provider).CreateConnection();
con.ConnectionString = connectionstring;
con.Open();
DbCommand command = DbProviderFactories.GetFactory(provider).CreateCommand();
command.CommandType = System.Data.CommandType.Text;
command.Connection = con;
command.CommandText = "SELECT * FROM Band";
//Bands ophalen
DbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Band b = new Band()
{
ID = reader["ID"].ToString(),
Name = reader["Name"].ToString(),
Picture = reader["Picture"].ToString(),
Description = reader["Description"].ToString(),
Twitter = reader["Twitter"].ToString(),
Facebook = reader["Facebook"].ToString(),
//Genres = (Genre)reader["Genres"] lijst van genres kunnen doorgeven, probleem met meerdere genres per band. Kijken filmpje inner joint
};
if (!DBNull.Value.Equals(reader["Picture"]))
{
b.Picture = reader["Picture"].ToString();
}
else
{
b.Picture = null;
}
list.Add(b);
}
//Genres ophalen via INNER JOIN
DbCommand command2 = DbProviderFactories.GetFactory(provider).CreateCommand();
command2.CommandType = System.Data.CommandType.Text;
command2.Connection = con;
command2.CommandText = "SELECT * FROM Band INNER JOIN Band_Genre On Band.ID = Band_Genre.BandID";
//Bands ophalen
DbDataReader reader2 = command2.ExecuteReader();
while (reader2.Read())
{
Genre g = new Genre()
{
ID = reader2["GenreID"].ToString(),
//Name = reader2[
};
}
reader.Close();
reader2.Close();
con.Close();
}
XAML:
<DataGrid.Columns>
<DataGridTextColumn Header="Band" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Picture" Binding="{Binding Picture}" />
<DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
<DataGridTextColumn Header="Twitter" Binding="{Binding Twitter}" />
<DataGridTextColumn Header="Facebook" Binding="{Binding Facebook}" />
<DataGridTextColumn Header="Genres" Binding="{Binding Genres}" />
</DataGrid.Columns>
</DataGrid>
- 답변 # 1
관련 자료
- postgresql - LIKE 조건이있는 내부 결합
- cockroachdb - sql 조인 - 변경 감지
- sql - 사례 진술을 기반으로 가입
- java - SQL에서 join을 사용하여 레코드를 삭제하려면 어떻게해야합니까?
- sql - 내부 조인이 두 개인 sqlite delete 문
- sql - SUM에 대한 INNER JOIN 문의 문제
- mysql - 조건부 SQL 왼쪽 조인
- javascript - if else 문을 수행하고 inner html을 표시하지만 innerhtml에는 URL을 어떻게 표시합니까?
- sql - 같은 테이블의 내부 조인
- scala - 불일치를 찾기위한 SQL JOIN
- 2 개의 값으로 SQL 조인, 그 중 하나는 null 일 수 있음
- SQL 쿼리에서 case 문을 사용하는 방법은 무엇입니까?
- sql server - Left Join SQL 쿼리를 수정하는 방법
- jdbc - 명령 행에서 Java 코드로 SQL 문 전달
- mysql - 트리플 조인 SQL
- sql server - sql - 조인 조건의 isnull
- mysql - Java에서 SQL 문을 반복하는 방법
- SQL 삽입 유형 시간 명령문
- SQL에서 LiNQ로, 결합시 조건으로 왼쪽 결합
- 익명의 내부 클래스에서는 Java continue 문이 허용되지 않습니다
관련 질문
- SQL이 c#에 테이블이 있는지 확인하십시오.
- c# : SQL에서 2 개의 테이블에서 데이터를 필터링하는 문제는 무엇입니까?
- c# : 마지막으로 삽입 된 테이블에 데이터를 삽입하는 방법 다른 표의 ID 값
- c# : 복잡한 명령 데이터 바인딩 WPF의 중첩 사용자 컨트롤간에
- c# : WPF 재료 디자인에서 Dialoghost 내용을 업데이트하는 방법은 무엇입니까?
- c# : WPF 컨트롤의 동적으로 정의 된 내용을 역시합니다
- c# : 다른 셀 입력을 기반으로 다른 테이블에서 데이터를 가져 오는 방법
- SQL-Command와 함께 DataTable-Object에서 foreach-loop에서 c#에서 액세스 데이터베이스를 업데이트하는 방법은 무엇입니까?
- c# : UWP 응용 프로그램 액세스 위반 오류를 디버깅하려면 어떻게합니까?
- c# : Xamlwriter는 왜 일부 속성에 {}을 추가합니까?
무엇을하고 싶은지 잘 모르겠다 ... 두 번째 리더는 테이블에 올바른 데이터가 없으면 장르 정보가없는 한 null을 반환하지 않아야합니다. 장르의 경우 장르에 속하기를 원하십니까?
장르 정보를 반환합니다. 그러나 두 번째 리더가 null 인 경우 Band_Genre가 채워지지 않았거나 잘못된 ID가있는 것처럼 보이므로 밴드 테이블에 조인 할 수 없습니다
수정
하나의 쿼리로 모두 원한다면 :