Avatar billede mikkel251 Seniormester
22. maj 2016 - 19:22 Der er 5 kommentarer og
1 løsning

MSSql inner join

Jeg har søgt lidt rundt på siden men jeg kan ikke finde en løsning til mit problem.

når jeg bruger den her så virker den fint nok den henter række 2 i tabellen tbl_Bruger og henter alt det som den skal
SELECT tblBruger.fldBrugernavn,
tblBruger.fldRolle_fk,
tblBruger.fldEmail,
tblRolle.fldRolle
FROM
tblBruger
INNER JOIN
tblRolle
ON
tblBruger.fldRolle_fk=tblRolle.fldId WHERE tblBruger.fldId=2

Men når jeg bruger den her hvor jeg har skiftet tblBruger.fldId=2 ud med tblBruger.fldId=@id så virker den ikke hvad gør jeg galt??

SELECT tblBruger.fldBrugernavn,
tblBruger.fldRolle_fk,
tblBruger.fldEmail,
tblRolle.fldRolle
FROM
tblBruger
INNER JOIN
tblRolle
ON
tblBruger.fldRolle_fk=tblRolle.fldId WHERE tblBruger.fldId=@Id

tak for i gider kikke på det
Avatar billede softspot Forsker
22. maj 2016 - 20:07 #1
Når du anvender en konstruktion som @id i en SQL-sætning, anvender du typisk parametre, så spørgsmålet er, hvordan du kalder denne SQL. Kan du vise koden der kalder?
Avatar billede mikkel251 Seniormester
22. maj 2016 - 20:22 #2
jeg har lige fundetud af at jeg ikke skal bruge where fordi jeg skal have listet en tabel med alle brugere og ikke kun 1 :D men jeg har et andet problem jeg får kun tallet på brugeren rolle.

jeg har joinet tabel rolle med tabel brugere og jeg får hele tiden fldRolle_fk tallet ud som er tallet på den rolle brugeren har. måske det er nemmere at vise :D

min metode: som henter fra begge tabeller:
  //TESTER LIGE
    public DataTable BrugerOgRolle()
    {
        cmd = new SqlCommand(@"SELECT tblRolle.fldId,
tblRolle.fldRolle,
tblBruger.fldRolle_fk,
tblBruger.fldBrugernavn,
tblBruger.fldEmail
FROM
tblRolle
RIGHT JOIN
tblBruger
ON
tblRolle.fldId=tblBruger.fldRolle_fk");
        //cmd.Parameters.AddWithValue("@id", _id);
        return DA.GetData(cmd);
    }

og den foreach loop jeg bruger til at vise det med
  DataTable dt_brugere = objBrugere.BrugerOgRolle();
            litBrugere.Text += "<th>Navn</th>";
            litBrugere.Text += "<th>Email</th>";
            litBrugere.Text += "<th>Rolle</th>";
            litBrugere.Text += "<th>Handling</th>";
            litBrugere.Text += "<th>Handling</th>";
            foreach (DataRow dr_bruger in dt_brugere.Rows)
            {
                if (Convert.ToInt32(dr_bruger["fldRolle_fk"].ToString()) == 1)
                {
                    litBrugere.Text += "<tr>";
                    litBrugere.Text += "<td>";
                    litBrugere.Text += dr_bruger["fldBrugernavn"].ToString();
                    litBrugere.Text += "</td>";

                    litBrugere.Text += "<td>";
                    litBrugere.Text += dr_bruger["fldEmail"].ToString();
                    litBrugere.Text += "</td>";

                    litBrugere.Text += "<td>";
                    litBrugere.Text += dr_bruger["fldRolle"].ToString(); 
                    litBrugere.Text += "</td>";

                    litBrugere.Text += "<td>";
                    litBrugere.Text += "<a href='rediger-profil.aspx?profilId=" + dr_bruger["fldId"] + "'>Rediger</a>";
                    litBrugere.Text += "</td>";

                    litBrugere.Text += "<td>";
                   
                    litBrugere.Text += "</td>";
                }
                else
                {                   
                    litBrugere.Text += "<tr>";
                    litBrugere.Text += "<td>";
                    litBrugere.Text += dr_bruger["fldBrugernavn"].ToString();
                    litBrugere.Text += "</td>";

                    litBrugere.Text += "<td>";
                    litBrugere.Text += dr_bruger["fldEmail"].ToString();
                    litBrugere.Text += "</td>";

                    litBrugere.Text += "<td>";
                    litBrugere.Text += dr_bruger["fldRolle"];
                    litBrugere.Text += "</td>";

                    litBrugere.Text += "<td>";
                    litBrugere.Text += "<a href='rediger-profil.aspx?profilId=" + dr_bruger["fldId"] + "'>Rediger</a>";
                    litBrugere.Text += "</td>";

                    litBrugere.Text += "<td>";
                    litBrugere.Text += "<a href='?brugerID=" + dr_bruger["fldId"] + "'>Slet</a>";
                    litBrugere.Text += "</td>";
                }
                litBrugere.Text += "</tr>";
            }

jeg håber det er nok til at se fejlen, som sagt så skal jeg have rollen på brugeren og ikke det tal den er knyttet til.
Avatar billede mikkel251 Seniormester
22. maj 2016 - 20:28 #3
Ja jeg ved ikke hvorfor jeg ikke havde set den men i min else sætning og i den her linje kode:

litBrugere.Text += dr_bruger["fldRolle"];

den havde jeg så lavet til min dr_bruger["fldRolle_fk"];

og da jeg så skulle skrive koden til jer så i kunne se den så fik jeg rettet i min else uden at være klar over det så nu virker den :D

jeg elsker at kode :D

men du skal stadig have dine point så der er jeg ny og du må lige hjælpe mig så du får dem
Avatar billede softspot Forsker
22. maj 2016 - 20:41 #4
Det er ikke nødvendigt. Du fandt selv løsningen, så dem beholder du bare selv. Tak fordi du tilbyder point til trods... :-)
Avatar billede mikkel251 Seniormester
22. maj 2016 - 21:04 #5
Det er mig der takke jeg havde nok stadig siddet med det hvis ikke jeg havde slået den op her på siden :D

fortsat en god aften :D
24. maj 2016 - 14:11 #6
Ja, det er også min erfaring, at det at formulere et problem kan være et skridt på vejen til at løse det.
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

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