08. juli 2002 - 23:49Der er
4 kommentarer og 1 løsning
join af flere tabeller
Hej
Jeg ønsker at joine 2 tabeller og resultatet skal bindes op mod et datagrid. En normal bind foregår altid mod en enkelt tabel men her ønsker jeg et antal felter fra f.eks 2 tabeller som skal vises i et datagrid.
Sql-eksempel : select a.felt1, b.felt2 from tabel a, tabel b where a.id = b.id
jeg har ledt efter eksempler men uden held. Det eneste jeg ønsker er et eksempel skåret ud i pap :-) eller et brugbart link.
Du var nok kommet længere i en database gruppe men.... Jeg går ud fra at det du gerne vil ha' er en forklaring på den SQL sætning du har vist. En SQL som skal udvælge data starter altid med en SELECT sætning:
SELECT felt1, felt2
i dette tilfælde vil vi have felt1 og felt2 vist ( en * vælger alle felter) Så skal vi beskrive hvor vi får dataene fra (FROM sætning):
FROM tabel1
Dit problem er dog at felt1 og felt2 befinder sig i 2 forskellige tabeller nemlig tabel1 og tabel2, derfor skal der en join til.
FROM tabel1, tabel2
Når man joiner kan man give de tabeller man udvælger et alias så de er nemmere at have med at gøre.
FROM tabel1 AS a, tabel2 AS b
AS tildeler et aliat men det er spild af tid at skrive AS så man lader være, samtidig kan man så fortælle SQL hvilken tabel felterne tilhøre:
SELECT a.felt1, b.felt2 FROM tabel1 a, tabel2 b
Her vælges felt1 fra tabel1 og felt2 fra tabel2. Det eneste vi mangler nu er at fortælle hvordan de 2 tabeller skal bindes sammen. Dette gøres med ON kommandoen:
FROM tabel1 a, tabel2 b ON a.id = b.id
Denne linie binder de to tabeller så de records i tabel1 og tabel2 der har samme værdi i id bliver parret.
Den endellige sætning bliver så:
SELECT a.felt1, b.felt2 FROM tabel1 a, tabel2 b ON a.id = b.id
Herefter kan du så begrænse resultatet af søgningen med en WHERE sætning f.eks:
SELECT a.felt1, b.felt2 FROM tabel1 a, tabel2 b ON a.id = b.id WHERE a.felt1 = 'test3'
tabel1 består af 2 kolonner id og felt1, tabel2 består af id og felt2:
tak for svaret men det jeg ønsker er at joine 2 tabeller i C# .NET Jeg har ikke forståelsesproblemer med sql men .NET er nyt for mig. Nedenstående linier binder data fra tabellen customers til et datagrid og det virker helt fint MEN hvis jeg nu ønsker at joine tabellen Customers med f.eks en ordertabel, hvordan takler jeg så kommandoen FILL da den kun refererer til EN tabel
Jeg håber at jeg har gjort spørgsmålet så klart som muligt :-)
OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from Customers", myConnection);
DataSet ds = new DataSet(); myCommand.Fill(ds, "Customers");
jeg har løst mit problem med en datareader og takker for svarene
Mvh Brian K
Synes godt om
Ny brugerNybegynder
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.