Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Der er flere felter, men de er ikke interessante her ;).
Det jeg vil er at hive alle poster hvis LeikariNummer findes i tabellerne Leikari og Limir. Så få jeg et antal poster. Nu vil jeg så for hver enkelt post have at vide hvor mange gange LeikariNummar findes i den tredje tabel (DystaNummar) og få det tal TILFØJET til resulaterne fra den SQL jeg postede i starten.
For at hjælpe lidt på det så kan jeg sige at feltnavnene er færøske og database er en fodbolddatabase. Leikari = spiller, Dyst = kamp, Limir = medlemmer, LimaNummer = medlemsnummer, DystaNummar = kampnummer etcetc :)
Så jeg vil have information om de enkelte spillere vist i en Datalist. I den første SQL får jeg al den data jeg skal have undtagen antal kampe spillede.
Du faar et problem med at bruge den i samme seatning som du allerede har fordi du ikke kan bruge SQL-optaellingsfunktionen COUNT sammen med aggregat udtrykket hvor du bruger asterisken for at vise begge tabellers indhold. Istedet bliver du noed til at vaelge alle felterne indviduelt som du vil have med i foerspoergslen. Jeg proevede at lave 3 tabeller med de felter du naevner i din anden post, og fik : SELECT Leikari.LeikariNummar, Leikari.LimaNummar, Leikari.Lid, Limir.LimaNummar, Limir.Lid, Count(DystaLeikari.LeikariNummar) AS CountOfLeikariNummar FROM Limir INNER JOIN (Leikari INNER JOIN DystaLeikari ON Leikari.LeikariNummar = DystaLeikari.LeikariNummar) ON Limir.LimaNummar = Leikari.LimaNummar GROUP BY Leikari.LeikariNummar, Leikari.LimaNummar, Leikari.Lid, Limir.LimaNummar, Limir.Lid;
Den tager KUN dem med der HAR sit ID i den 3. tabel (DystaLeikari). Jeg vil også have dem med der IKKE er med.. dvs den bare skal smide et 0 i feltet. Er det muligt?
Det bliver problematisk da foerspoergslen er baseret paa relationenerne mellem tabellerne. Mit bedste foreslag der vil vaere at indsaette en "dummy variable" i din Leikari og Limir tabeller hvor LimaNummar og LeikarNummar begge er 0. Dvs de "blanke" taelles ind under denne Dummy variable istedet.
Mht Dummy variablen kan du blot navngive den som f.eks "andre spillere". Jeg gaar ud fra at det er dem som ikke er i spiller-listen du gerne vil have talt op ogsaa.
Skulle en LEFT JOIN mon ikke kunne klare den optælling (returnere Null når der ikke er rækker i tabellen DystaLeikari). Altså en lidt revideret overchord SQL:
SELECT Leikari.*, Limir.*, DL.CountOfLeikariNummar FROM Limir INNER JOIN (Leikari LEFT JOIN [SELECT LeikariNummar, COUNT(*) AS CountOfLeikariNummar FROM DystaLeikari GROUP BY LeikariNummar]. AS DL ON Leikari.LeikariNummar = DL.LeikariNummar) ON Limir.LimaNummar = Leikari.LimaNummar GROUP BY Leikari.LeikariNummar, Leikari.LimaNummar, Leikari.Lid, Limir.LimaNummar, Limir.Lid;
Hvis det ikke virker, vil jeg til mit forsvar sige, at jeg ikke har testet det... ;-)
SELECT Leikari.*, Limir.*, DL.CountOfLeikariNummar FROM Limir INNER JOIN (Leikari LEFT JOIN [SELECT LeikariNummar, COUNT(*) AS CountOfLeikariNummar FROM DystaLeikari GROUP BY LeikariNummar]. AS DL ON Leikari.LeikariNummar = DL.LeikariNummar) ON Limir.LimaNummar = Leikari.LimaNummar
skulle det have været. Ingen grund til at bruge GROUP BY i den yderste SQL.
"The MS Jet Database engine cannot find the input table or query 'SELECT LeikariNummar, COUNT(*) AS CountOfLeikariNummar FROM DystaLeikari GROUP BY LeikariNummar'. Make sure it exists and that its name is spelled correctly."
SELECT Leikari.*, Limir.*, DL.CountOfLeikariNummar FROM Limir INNER JOIN (Leikari LEFT JOIN [SELECT LeikariNummar, COUNT(*) AS CountOfLeikariNummar FROM DystaLeikari GROUP BY LeikariNummar]. AS DL ON Leikari.LeikariNummar=DL.LeikariNummar) ON Limir.LimaNummar=Leikari.LimaNummar;
Når jeg siger, at den virker, så mener jeg, at den ikke giver fejlmeldinger. Om den returner de rigtige data, ved jeg ikke. Jeg har ikke fyldt data i mine tabeller... Men det kan du sikkert hurtigt finde ud af...
SELECT Leikari.*, Limir.*, IIf(DL.CountOfLeikariNummar IS NULL, 0, DL.CountOfLeikariNummar) FROM Limir INNER JOIN (Leikari LEFT JOIN [SELECT LeikariNummar, COUNT(*) AS CountOfLeikariNummar FROM DystaLeikari GROUP BY LeikariNummar]. AS DL ON Leikari.LeikariNummar=DL.LeikariNummar) ON Limir.LimaNummar=Leikari.LimaNummar;
SELECT Leikari.*, Limir.*, IIf(DL.CountOfLeikariNummar Is Null,0,DL.CountOfLeikariNummar) AS LeikariAntal FROM Limir INNER JOIN (Leikari LEFT JOIN [SELECT LeikariNummar, COUNT(*) AS CountOfLeikariNummar FROM DystaLeikari GROUP BY LeikariNummar]. AS DL ON Leikari.LeikariNummar=DL.LeikariNummar) ON Limir.LimaNummar=Leikari.LimaNummar;
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.