Murty Skrevet 2. desember 2005 Del Skrevet 2. desember 2005 (endret) Heisann! Leter etter en enkel funksjon til å telle hvor mange innlegg man har i en allerede eksisterende mysql db. altså.. visuelt sett: det er xxx påmeldt. (hvor xxx skal tilsvare antall påmeldte) Noen som har no enkelt eventuelt vanskelig skript for det? burde vel være ganske enkelt vil jeg tro. *forresten utrolig digg design på siden her nå, behaglige farger. Lenge siden jeg har vært her. Endret 2. desember 2005 av Murty Lenke til kommentar
Ueland Skrevet 2. desember 2005 Del Skrevet 2. desember 2005 SELECT COUNT(*) AS totalt FROM tabellnavn Den spørringen finner alle rader fra tabellen "tabellnavn" og kaller resultatfeltet for "totalt" Lenke til kommentar
Murty Skrevet 2. desember 2005 Forfatter Del Skrevet 2. desember 2005 (endret) SELECT COUNT(*) AS totalt FROM tabellnavn Den spørringen finner alle rader fra tabellen "tabellnavn" og kaller resultatfeltet for "totalt" 5240532[/snapback] hvor setter jeg inn denne koden? *fant det ut.* Endret 2. desember 2005 av Murty Lenke til kommentar
roac Skrevet 2. desember 2005 Del Skrevet 2. desember 2005 SELECT COUNT(*) AS totalt FROM tabellnavn Den spørringen finner alle rader fra tabellen "tabellnavn" og kaller resultatfeltet for "totalt" Løsningen din er upåklagelig, men jeg kommer likevel med litt tilleggsinformasjon som kanskje kan være av interesse for noen, nemlig to varianter som i hvert fall på noen databaseimplementasjoner oppfører seg noe annerledes: SELECT COUNT(1) FROM tabell Denne yter på en del implementasjoner bedre enn COUNT(*). På nyere implementasjoner av databaser skal dette ikke være noe problem. SELECT COUNT(kolonne) FROM tabell Jeg vet ikke hvordan denne er på MySQL, men på Microsoft SQL Server ignorerer COUNT(kolonne) rader der kolonne er NULL. Lenke til kommentar
blackbrrd Skrevet 3. desember 2005 Del Skrevet 3. desember 2005 Det er relativt vanlig å kjøre count på primary key'n... Hvis du har en primary key som er null så driver du med noe rart.. Lenke til kommentar
Murty Skrevet 3. desember 2005 Forfatter Del Skrevet 3. desember 2005 Det er relativt vanlig å kjøre count på primary key'n... Hvis du har en primary key som er null så driver du med noe rart.. 5245060[/snapback] Har a en primary key med auto_inc men den endres jo ikke hvis jeg sletter oppføringer... derfor må jeg kunne telle entries.., Men alt i orden nå! Lenke til kommentar
roac Skrevet 4. desember 2005 Del Skrevet 4. desember 2005 Har a en primary key med auto_inc men den endres jo ikke hvis jeg sletter oppføringer... derfor må jeg kunne telle entries.., Men alt i orden nå! Du teller antall forekomster av PK, og derfor er verdien av den irrelevant. Den kan om så være en GUID eller en helt annen tilfeldig eller semitilfeldig verdi. Lenke til kommentar
kilogram Skrevet 7. desember 2005 Del Skrevet 7. desember 2005 SELECT COUNT(kolonne) FROM tabell Jeg vet ikke hvordan denne er på MySQL, men på Microsoft SQL Server ignorerer COUNT(kolonne) rader der kolonne er NULL. 5240945[/snapback] I MySQL, i alle fall når du bruker MyISAM- eller InnoDB-tabeller, hentes resultatet av denne spørringa ved ein diskaksess (eller rett frå minnet, om tabellen er lasta inn allereie). Dei aller fleste databasar lagrar antallet rader i ein tabell sammen med tabelldefinisjonen. Lenke til kommentar
roac Skrevet 7. desember 2005 Del Skrevet 7. desember 2005 I MySQL, i alle fall når du bruker MyISAM- eller InnoDB-tabeller, hentes resultatet av denne spørringa ved ein diskaksess (eller rett frå minnet, om tabellen er lasta inn allereie). Dei aller fleste databasar lagrar antallet rader i ein tabell sammen med tabelldefinisjonen. Jeg tolker det da dithen at count(*), count(kolonne) og count(1) alltid gir et samme svaret i MySQL, stemmer det? Personlig ser jeg i hvert fall fordelen av å kunne bruke count(kolonne) for å finne antall rader i en tabell der det er en verdi av kolonne. Hvis vi for eksempelets skyld ikke tenker på normalisering, kan følgende da være en fornuftig spørring: SELECT count(OrgNr) FROM Kunder Dette vil med Microsoft SQL Server gi antallet kunders om har et Organisasjonsnummer, altså bedrifter. Lenke til kommentar
Gilbert Skrevet 8. desember 2005 Del Skrevet 8. desember 2005 https://www.diskusjon.no/index.php?showtopi...dpost&p=3967852 Lenke til kommentar
kilogram Skrevet 8. desember 2005 Del Skrevet 8. desember 2005 Jeg tolker det da dithen at count(*), count(kolonne) og count(1) alltid gir et samme svaret i MySQL, stemmer det? Personlig ser jeg i hvert fall fordelen av å kunne bruke count(kolonne) for å finne antall rader i en tabell der det er en verdi av kolonne. Hvis vi for eksempelets skyld ikke tenker på normalisering, kan følgende da være en fornuftig spørring: SELECT count(OrgNr) FROM Kunder Dette vil med Microsoft SQL Server gi antallet kunders om har et Organisasjonsnummer, altså bedrifter. 5265582[/snapback] MySQL er litt ekkel på det området. COUNT(kolonne) gir tilbake antallet ikke-NULL-rader, mens COUNT(*) returnerer antallet rader (uansett om de er NULL eller ikke). Så, dersom du har en kolonne spesifisert som NOT NULL vil de gi samme svar, men COUNT(*) vil være raskere enn COUNT(kolonne) om du bruker MyISAM-tabeller. I ditt eksempel vil da COUNT(kolonne) være det mest aktuelle, om du bare vil ha antallet bedrifter som har organisasjonsnummer. Viss du vil ha totalt antall bedrifter må du bruke COUNT(*). Eg tok nok feil når eg sa at dette gjaldt InnoDB i går, siden InnoDB ikke kan gjøre den typen caching av data på grunn av transaksjonsstøtten. En kort beskrivelse av COUNT()-oppførselen finnes i MySQL-dokumentasjonen. Lenke til kommentar
blackbrrd Skrevet 8. desember 2005 Del Skrevet 8. desember 2005 å kjøre SELECT COUNT(primary_key) FROM table skal fungere samme hva, så sant du ikke bruker composite keys, noe som var ut omkring 1990 Primary key'ene i databasene jeg bruker har ihvertfall NOT NULL constraint på seg.. I postgres så vil ovennevnte spørring hente antallet uten å kjøre en sequential scan på tabellen, mao så tar det noen få millisekunder å hente ut antallet, selv om du har millioner av rader. Ser ikke bortifra at den henter antallet fra primary key indeksen - er jo ikke usannsynlig at den sitter med antallet Lenke til kommentar
roac Skrevet 9. desember 2005 Del Skrevet 9. desember 2005 å kjøre SELECT COUNT(primary_key) FROM table skal fungere samme hva, så sant du ikke bruker composite keys, noe som var ut omkring 1990 Hvorfor mener du composite keys er ut? Dersom du har to numeriske verdier som uansett må være unike, og derfor også unikt identifiserer en rad i tabellen, så ser jeg ofte liten vits i å innføre en ekstra kolonne for å unngå en composite key. Unntaket er når det er en del tabeller som skal ha foreign key mot denne. Lenke til kommentar
blackbrrd Skrevet 9. desember 2005 Del Skrevet 9. desember 2005 Du svarte akkurat på ditt eget spørsmål "Unntaket er når det er en del tabeller som skal ha foreign key mot denne." Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå