webForumDet fria alternativet
Logga in / Bli medlem

Disctinct och count

Databaser & SQL

10 svar · 200 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

Jag har en tabell som heter TblUser och den har 3 fält

TblUserID - räknare, primärnyckel
TblUserName - text
TblUserAlbumName - text

Jag vill skriva ut UserName distinct så jag bara får en av varje användare efter det ska den räkna hur många ggr den användaren finns tex

Kalle (4)
Bosse (2)
Lisa (1)

Hur skriver jag en sådan distinct och count satts, jag har sökt med inte funnit svar..tacksam

Medlem sedan dec. 19996 522 inlägg
#2

Det går väll försten inte, jag måste väll göra 2 sqlfrågor och sedan loopa igenom den i varandra så att säga

Medlem sedan dec. 19996 522 inlägg
#3

Löste det med att ta en å göra en nya sqlfråga inne i loopen..

Medlem sedan dec. 200012 464 inlägg
#4

Gör inte så.


select TblUserName,count(*) as antal
  from TblUser
 group by TblUserName

Varför använder du inte varchar för dessa kolumner

TblUserName - text
TblUserAlbumName - text

Medlem sedan juni 200032 967 inlägg
#5
select distinct tblUserName, count(tblUserName) from tblUser group by tblUserName

men jag förstår inte alls varför du har prefixet tbl till dina fältnamn. fld borde vara mer passande eller ännu hellre, något som vittnar om fältets typ.

Medlem sedan dec. 19996 522 inlägg
#6

@nders, faktiskt har jag inte de namnen, jag skrev bara några enkla rakt ur skallen så folk förstår typ :)

Tack killar, återkommer om jag misslyckas något mer

Medlem sedan dec. 19996 522 inlägg
#7

återkomm snabbt, förstår inte och vet inte om man kan skriva en fråga så här

Nu har jag samma tabell som jag använde innan och så har jag en tabell som heter TblFoto och den tabellen har

TblFotoID - räknare
TblUserID - tal (relation till TblUserID i TblUser)
TblFotoFile - text
TblFotoDesc - text

jag skickar TblUserName med en querystring till typ
showfotoalbums.asp?ShowUser=Pelle

Där ska jag plocka fram alla album som har pelle som TblUserName (ifrån TblUser) och sen ska jag räkna hur många foton i det albumet som är aktuellt i loopen som hör till just det blUserID. Förstår ni

så det typ kan se ut så här

Pelles Album
>>Svartvita foton (34 st bilder)
>>Färgfoton (12 st bilder)

Jag vet hur man kan göra det om man tar 2 sql frågor, men går det att lösa med endast en ?

Medlem sedan dec. 19996 522 inlägg
#8
SQLStmt ="SELECT UserAlbums.AlbumID, UserAlbums.AlbumName, UserAlbums.AlbumContent, UserAlbums.AlbumUser, UserPictures.UserPicAlbumID, Count(UserPictures.UserPicID) FROM FotoGalleri, UserAlbums (LEFT JOIN UserPictures ON UserAlbums.AlbumID = UserPictures.UserPicAlbumID) WHERE UserAlbums.AlbumUser = '"& Request.Querystring("ShowUser") &"' group by UserPictures.UserPicID"

Det fungerar inte att göra så här, har jag tänkt helt käpprätt åt skogen eller är jag på rätt väg

Medlem sedan dec. 200012 464 inlägg
#9
select tblUserName,tblFotoDesc,count(*)
  from tblFoto join tblUsers
    on tblFoto.userid = tblUsers.userid
 group by tblUserName,TblFotoDesc
 order by tblUserName

Du får då upp en rad för varje unik kombination av tblUserName och tblFotoDesc, så om du vill ha den utskriften du visade, så får du själv hålla reda på när tblUserName byter värde.

Medlem sedan dec. 200012 464 inlägg
#10

Alla kolumner i select-listan, som inte ingår i en aggregatfunktion, måste vara med i group by.

Så om du samtidigt vill ha upp en massa information om varje foto och även totala antalet foton så är det kanske något dylikt detta du vill ha


select tblFoto.*, (select count(*) from tblFoto where tblUserId = t.tblUserid)
from tblFoto t
Medlem sedan dec. 19996 522 inlägg
#11

Tackar tackar, ska leka lite nu

261 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)