Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

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

meneer_ed
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

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