Avatar billede lasserasch Juniormester
21. december 2006 - 14:57 Der er 3 kommentarer og
1 løsning

sql sætning inner join

Hejsa.

Jeg har 2 tabeller. Den ene inderholder en brugerliste, med fornavn, efter, og et postnummer felt.

Den anden tabel indeholder en reference tabel mellem postnumre og bynavne.


Jeg skal se om jeg kan lave en sql sætning, hvor jeg får alle records med ud fra brugerlisten også selvom postnummeret ikke findes i postnummer referencelisten.

Pt. ser min SQL sætning således ud :



select fornavn, efternavn, postnummer from brugerliste inner join POSTNUMRE on POSTNUMRE.POSTNUMMER = brugerliste.postnummer



Men hvis en record i brugerlisten har et postnummer som ikke findes i postnummer tabellen, så kommer denne record jo ikke med!


Kan man gøre noget, for at få alle records med ud, uanset hvad???


/Lasse
Avatar billede bennytordrup Nybegynder
21. december 2006 - 15:00 #1
Brug en left join i stedet for en inner.
Avatar billede bennytordrup Nybegynder
21. december 2006 - 15:01 #2
select Fornavn, Efternavn, PostNummer, isnull(bynavn, '<ikke angivet>') as bynavn from brugerliste left join postnumre on postnumre.postnummer = brugerliste.ostnummer
Avatar billede bennytordrup Nybegynder
21. december 2006 - 15:01 #3
select Fornavn, Efternavn, PostNummer, isnull(bynavn, '<ikke angivet>') as bynavn from brugerliste left join postnumre on postnumre.postnummer = brugerliste.postnummer
Avatar billede lasserasch Juniormester
21. december 2006 - 19:16 #4
Kanon! Takker for det...

Virker perfekt!

Tænkte på om det måske også kunne lade sig gøre at lave en replace på bestemte værdi'er direkte i SQL'en?

Det er en C# kode der ligger til grund for mit program, og pt. replacer jeg efterfølgende værdier nogle steder. Det er fordi der i mit udtræk fra vores AS/400 løn system, står D hvis medarbejderen kommer fra Tyskland, og P fra polen, ENG for england, JOD for Jordan osv...

Pt, ser koden sådan ud :

-----------------

      private void toolStripButton1_Click_1(object sender, EventArgs e)
        {

          try
            {
                String SQL_Text;
                SQL_Text = "ARBFTX,ARA8CD,ARBITX,ARBHTX,ARBCTX,ARBJTX,ARB7CD,ARAACD,ARBETX,ARAKNB,ARAACD,ARBKTX,ARADDT,ARACDT,ARDQST, isnull(bynavn, '') as bynavn ";


                SqlDataReader RSDR = SSDR("select " + SQL_Text + " from PAARREL0 left join POSTNUMRE on POSTNUMRE.POSTNUMMER = PAARREL0.ARB7CD");
                dataGridView1.Rows.Clear();
                Int32 A = 0;
                while (RSDR.Read())
                {
                    this.Text = "Indlæser Data... : " + Convert.ToString(A);
                    Int32 I = 0;
                    dataGridView1.Rows.Add();
                    while (I < dataGridView1.Columns.Count)
                    {
                        String Value = Convert.ToString(RSDR[Convert.ToString(dataGridView1.Columns[I].Name)]);
                       
                        if            (Convert.ToString(dataGridView1.Columns[I].Name) == "ARB7CD")
                        {
                         
                            Value = Value + " " + RSDR[Convert.ToString("bynavn")];
                            if (Value.Trim().Length < 4)
                            {
                                if (Value.Trim() != "JOD")
                                {
                                    Value = Value.Replace("D", "Tyskland").Replace("P", "Polen").Replace("F", "Frankrig").Replace("ENG", "England");
                                }
                                else
                                {
                                    Value = Value.Replace("JOD", "Jordan");
                                }
                            }

                        }


                        if (Value.StartsWith("00000"))
                            Value = Value.Substring(5);
                        dataGridView1[I, A].Value = Value.Trim();
                        I = I + 1;
                    }

                    A = A + 1;

                }
                this.Text = "Labels - Skare Meat Packers K/S";
                MessageBox.Show("Data Indlæst korrekt. Indlæste ialt : " + Convert.ToString(A) + " rækker med data.", "Data Indlæst korrekt");
            }

            catch (Exception ex)
            {
                MessageBox.Show("Fejl : " + ex.Message);
            }
         
        }

-------------

Ved ikke om du er hård til C#, men du kan jo nok se at jeg replacer på bestemte værdier, for hver record jeg trækker ud.

Kunne være lækkert at gøre det direkte i SQL sætningen, men jeg er ikke så hård til SQL endnu :-)

Nå, tak for hjælpen!


/Lasse
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester