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
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
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
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