Jeg trækker følgende data ud senere i min kode: landenavn, nationalitetID, spillerID, fornavn, efternavn, position, division, sex
Oplysninger om spillere er gemt i "person" Oplysninger om klubber er gemt i "klub" Oplysninger om hvilke spillere der er i hvilke klubbber er gemt i "klubdiv"
Sætningen giver ikke nogle fejl, men problemet er, at jeg ikke får nogle spillere uden klub ud fra listen. Grunden er at jeg laver relationerne "person.spillerID = klubdiv.spillerID" og "klubdiv.klubID = klub.klubID". De gør at en spiller SKAL have et klubID som eksisterer i listen over klubber.
Er der nogen der har et forslag til hvordan jeg kan hive samtlige spillere ud af databasen - også dem der slet ikke er nævnt i klubdiv-tabellen? Jeg har overvejet om man kan lave en endnu en select sætning længere nede - måske inde i "do while not rs.eof" løkken, hvor dataene bliver brugt.
Er det helt sort snak? Så skriv lige, så prøver jeg at forklare det bedre...
Hvis man skulle lave en SELECT som henter alle de ting du har i de forskellige tabellen (køn/divition/mf) så ville man lave det med JOIN af de forskellige tabeller for at styre hvordan se forskellige hænger sammen og link data rigtigt samme. Så din SQL vil se sådan her ud:
Princippet er man starter med udgangspunktet som er person tabellen og JOINer en tabel på efter ad gangen.
strSQL = "SELECT person.fornavn, person.efternavn, position.navn, nationalitet.navn, klub.navn, division.navn, køn.navn FROM (((((person LEFT JOIN position ON person.positionID = position.positionID) LEFT JOIN nationalitet ON person.nationalitetID = nationalitet.nationalitetID) LEFT JOIN klubdiv ON person.spillerID = klubdiv.SpillerID) LEFT JOIN køn ON person.kønID = køn.kønID) LEFT JOIN division ON person.divisionID = division.divisionID) LEFT JOIN klub ON klubdiv.klubID = klub.klubID ORDER BY person.spillerID DESC LIMIT 5;"
hov jeg har fået lagt divisionID kolonnen ind i person tabellen den før viste SQL så prøv men denne hvor kolonne divisionID er i klubdiv tabellen:
strSQL = "SELECT person.fornavn, person.efternavn, position.navn, nationalitet.navn, klub.navn, division.navn, køn.navn FROM (((((person LEFT JOIN position ON person.positionID = position.positionID) LEFT JOIN nationalitet ON person.nationalitetID = nationalitet.nationalitetID) LEFT JOIN klubdiv ON person.spillerID = klubdiv.SpillerID) LEFT JOIN køn ON person.kønID = køn.kønID) LEFT JOIN klub ON klubdiv.klubID = klub.klubID) LEFT JOIN division ON klubdiv.divisionID = division.divisionID ORDER BY person.spillerID DESC LIMIT 5;"
En forkalring. Man sætte tabeller sammen eller henter data fra en anden tabel og sætter sammen med den første tabel. Eks men to tabeller.
person Navn KlubID Ole 4
I klub tabellen kan man som du ved havde alle klubber. Klub ID navn 1 OB 2 Aab 3 Brøndby 4 Vejle
osv Det man gør med JOIN på den måde er at hedte alle de records fra klub tabellen hvor person tabllens klubID er lig med klub tabellens id : SELECT person.navn, klub.navn FROM person LEFT JOIN klub ON person.klubID = klub.ID
Så får man dette ud: personnavn klubnavn Ole Vejle
Hvis du ikke vil havde klub navnet ud kan du tilføje: distinct efter select for kun at vælge personen en gang, hvis du vil havde nuværende klub nanv med så tilføj en WHERE hvor nuværende=1 og nuværende er Null
WHERE (((klubdiv.nuværende)=1 Or (klubdiv.nuværende) Is Null))
strSQL = "SELECT distinct person.fornavn, person.efternavn, position.navn, nationalitet.navn, klub.navn, division.navn, køn.navn FROM (((((person LEFT JOIN position ON person.positionID = position.positionID) LEFT JOIN nationalitet ON person.nationalitetID = nationalitet.nationalitetID) LEFT JOIN klubdiv ON person.spillerID = klubdiv.SpillerID) LEFT JOIN køn ON person.kønID = køn.kønID) LEFT JOIN klub ON klubdiv.klubID = klub.klubID) LEFT JOIN division ON klubdiv.divisionID = division.divisionID WHERE (((klubdiv.nuværende)=1 Or (klubdiv.nuværende) Is Null)) ORDER BY person.spillerID DESC LIMIT 5;"
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.