홈>
학교 프로젝트를하고 있습니다
밴드의 모든 정보를 얻고 싶습니다. 잘 작동합니다. 내가 장르에 도착할 때까지. 밴드는 여러 장르를 가질 수 있고 그 반대도 가능하기 때문에 조금 특별합니다.
그래서 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 문이 허용되지 않습니다
관련 질문
- C# SQLite 테이블을 생성하고 테이블이 존재하지 않을 경우 행 삽입
- c#의 csv에서 값을 가져오는 방법
- C# ASP .NET Entity Framework는 여러 중첩 테이블에서 선택
- c# : xamarin 형식에서 한 행의 라디오 버튼을 클릭하면 ListView 항목의 인덱스 가져오기
- LINQ to SQL C#에서 SELECT COUNT
- c# : from, to, via를 기준으로 경로의 시작점과 끝점을 선택합니다.
- c# : XAML 도구 키트 프로젝트 설정 문제를 위한 머티리얼 디자인
- c# : Windows 파일 탐색기에서 파일을 여는 앱을 선택할 때 내 앱에 대한 설명 추가
- c# : WPF ListView에서 업데이트 버튼을 사용하여 선택한 항목 업데이트
- c# : SQL Server 데이터베이스에서 테이블 열 값을 가져오는 방법
무엇을하고 싶은지 잘 모르겠다 ... 두 번째 리더는 테이블에 올바른 데이터가 없으면 장르 정보가없는 한 null을 반환하지 않아야합니다. 장르의 경우 장르에 속하기를 원하십니까?
장르 정보를 반환합니다. 그러나 두 번째 리더가 null 인 경우 Band_Genre가 채워지지 않았거나 잘못된 ID가있는 것처럼 보이므로 밴드 테이블에 조인 할 수 없습니다
수정
하나의 쿼리로 모두 원한다면 :