Vraag & Antwoord

Programmeren

Select-statement met 1-n relatie maar..(asp.net, C#)

8 antwoorden
  • Ik heb een hoofdtabel en een subtabel. Dit is een 1:n relatie. Dus iemand heeft bijvoorbeeld 5 e-mailadressen. Maar nu wil ik alleen het eerste e-mailadres van alle personen tonen. Top 1 werkt niet, dan krijg ik inderdaad maar één resultaat. DISTINCT werkt ook niet.
  • Dat kan met een GROUP BY. Bedenk je echter dat een tabel ongeordend is, dus wat versta jij onder 'het eerste e-mailadres'. Heb je bijvoorbeeld een kolom 'volgnummer' o.i.d. opgenomen, dan kun je dat gebruiken.
  • [i:cb402e8db3][b:cb402e8db3]GROUP BY...[/b:cb402e8db3] GROUP BY... was added to SQL because aggregate functions (like SUM) return the aggregate of all column values every time they are called, and without the GROUP BY function it was impossible to find the sum for each individual group of column values. [/i:cb402e8db3] Ik wil helemaal geen optelling. Voorbeeld: tabel Naam NaamID naam tabel Email. EmailID NaamID Emailadres uitwerking wiep, 1, emailadres1@home.nl wiep, 1, emailadres2@home.nl wiep, 1, emailadres3@home.nl wiep, 1, emailadres4@home.nl wiep, 1, emailadres5@home.nl Joost1970, 2, emailadres1@home.nl Joost1970, 2, emailadres2@home.nl Joost1970, 2, emailadres3@home.nl Ik wil alleen de eerste van de rijtjes zien: wiep, 1, emailadres1@home.nl Joost1970, 2, emailadres1@home.nl
  • Je moet wel GROUP BY gebruiken, omdat je dan FIRST(<item>) in je select statement kunt plaatsen. [code:1:cfdc90f013]SELECT Naam.Naam, Naam.NaamID, FIRST(Email.Emailadres) FROM Naam Inner Join Email ON Naam.NaamID = Email.NaamID GROUP BY Naam.Naam, Naam.NaamID[/code:1:cfdc90f013] Zo kun je ook het laatste adres vinden (LAST(Emailadres) :wink:)
  • THANKS, een bos bloemen komt uw kant op (bij wijze van spreken natuurlijk).
  • Vervolg. Hoe toon ik het e-mailadres in een Repeater? <%# DataBinder.Eval(Container.DataItem, "Naam")%> <%# DataBinder.Eval(Container.DataItem, "NaamID")%> <%# DataBinder.Eval(Container.DataItem, "????????????????")%>
  • Geef het beestje een naam: [code:1:d9c0c35bb3]SELECT Naam.Naam, Naam.NaamID, FIRST(Email.Emailadres) AS EersteAdres FROM ...[/code:1:d9c0c35bb3]
  • Wederom mijn dank. Ik had al even AS gebruikt maar toen had ik er waarschijlijk een andere fout in staan :D

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.