gridview dataset'u tabel powiązanych joinem

0

Witam,
gdy wyznaczam konkretne kolumny z tabeli pracownik tym o to kodem:

 
SqlCeDataAdapter adapter2 = new SqlCeDataAdapter("SELECT p_imie, p_nazwisko, p_wiek FROM pracownik JOIN adres ON pracownik.p_aID = adres.a_id;", conn);

Pojawia się niewypełniona tabela z danymi pracownik:
user image

Natomiast jeśli napiszę :

SqlCeDataAdapter adapter2 = new SqlCeDataAdapter("SELECT * FROM pracownik JOIN adres ON pracownik.p_aID = adres.a_id;", conn); 

Join działa, wyświetla kolumny z oby dwóch tabel, lecz również bez wypełnienia:
user image

Pozostałe zakładki programu, w których wyświetlam pojedyńcze tabele działają bez zarzutów, mam problem tylko z joinem i nie rozumiem czemu. O to cały kod:

 private void fillGridView()
        {
           
            
            SqlCeDataAdapter drugidataset = new SqlCeDataAdapter("Select p_id, p_aID, p_sID from pracownik", conn);
            DataTable table = new DataTable();
            drugidataset.Fill(table);
            drugidataset.FillSchema(table, SchemaType.Source);
            

            object id = table.Rows[0]["p_id"];
            
 
            string komenda = @"Update pracownik set p_aID = '" + id + "' ";
            string komenda2 = @"Update pracownik set p_sID = '" + id + "' ";
            SqlCeCommand komendaa = new SqlCeCommand(komenda, conn);
            SqlCeCommand komendaa2 = new SqlCeCommand(komenda2, conn);
            komendaa.ExecuteNonQuery();
            komendaa2.ExecuteNonQuery();

            SqlCeDataAdapter adapter = new SqlCeDataAdapter("Select p_imie, p_nazwisko, p_wiek from pracownik", conn); 
            SqlCeDataAdapter adapter1 = new SqlCeDataAdapter("Select s_stanowisko, s_pensja from stanowisko", conn);
            SqlCeDataAdapter adapter2 = new SqlCeDataAdapter("SELECT * FROM pracownik JOIN adres ON pracownik.p_aID = adres.a_id;", conn); // JOIN stanowisko ON pracownik.p_sID=stanowisko.s_id;  <<<-- w Opcji join 3 tabel

            DataSet set = new DataSet();
            adapter.Fill(set, "pracownik");
            adapter1.Fill(set, "stanowisko");
            adapter2.Fill(set, "All");


            view_pracownicy.DataSource = set;
            view_pracownicy.DataMember = "pracownik";
            view_stanowiska.DataSource = set;
            view_stanowiska.DataMember = "stanowisko";
            view_wszystkie.DataSource = set;
            view_wszystkie.DataMember = "All";
           
        }

P.S. W podglądzie gdy tworze wątek są zdjęcia, a teraz okazuje się, że są same linki do zdjęć

0

Pokazuje dobrze w pierwszym jak i drugim kolumny ponieważ w pierwszym zapytaniu wybrałeś konkretne kolumny i one są pokazywane w drugim pokazuje wszystkie ze względu że kazałeś wszystkie *. A czemu są puste ponieważ może to zapytanie nic nie zwraca, puść je pod samą bazą danych i sprawdź czy coś zwrócą.

0

W takim razie czy mógłbyś mnie nakierować jak zrobić select z 1 tabeli i select z 2 :) Myślałem, że jak zrobie selecta z 1 i połącze z 2 to wyświetlone zostaną wyznaczone kolumny z 1 + cała 2 tabela.
Ta komenda dobrze łączy tabele (są tylko wskazane kolumny) ale za to wypełnia tylko kolumny z 2 tabeli :

 "select p_imie, p_nazwisko, p_wiek, a_ulica, a_miasto, a_kod_p from pracownik RIGHT JOIN adres ON pracownik.p_aID = adres.a_id;"

Szukam rozwiązania, kombinuję ale nie daję z tym rady

1
--Na przykład tak:
select p.*, a.* from pracownik as p RIGHT JOIN adres as a ON pracownik.p_aID = adres.a_id;
--lub:
select p.p_imie, p.p_nazwisko /* itd.. */, a.nazwa, a.cos /*itd...*/ from pracownik as p RIGHT JOIN adres as a ON pracownik.p_aID = adres.a_id;
0

Wielkie dzięki teraz dobrze łączy ^^
Ale nadal jest problem z wypełnieniem kolumn tabeli pracownik. W zapytaniu do bazy zwraca NULL dla tabeli pracownik a prawidłowe wartości dla tabeli adres. Co jest nie tak z zapytaniem ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1