Avatar billede thomasabcd Nybegynder
27. september 2006 - 22:30 Der er 6 kommentarer og
1 løsning

Vælge antal poster hvor brugeren er den første til at lave indlæg

Hej,

jeg har et site, hvor brugerne kan skrive om forskellige emner. Hvordan laver jeg en query, så jeg kan finde ud af, hvor mange gange, en bruger har været den første til at skrive om et emne?

I den ene tabel har jeg følgende felter: indlægID, tekst, brugerID, dato og i den anden har jeg emneID, indlægID
Avatar billede ellebaek Nybegynder
27. september 2006 - 22:45 #1
det er vel alle de poster hvor emneID fra tabel2 er lig med indlægID i tabel1?

det må være noget i stilen af:
SQL = "SELECT count(*) FROM tabel1 INNER JOIN tabel2 ON indlægID = emneID WHERE brugerID = '"&bruger&"'"

eller måske:
SQL = "SELECT count(*) FROM tabel1 WHERE indlægID IN (SELECT emneID FROM tabel2) WHERE brugerID = '"&bruger&"'"
Avatar billede thomasabcd Nybegynder
27. september 2006 - 22:47 #2
Der får jeg vel kun antal indlæg pr. bruger. Jeg vil gerne have indlæg pr. bruger, hvor brugeren er den FØRSTE til at skrive et indlæg
Avatar billede ellebaek Nybegynder
27. september 2006 - 22:55 #3
ja... der hvor brugeren er den første til at lave indlæg, er det ikke der hvor du har et emneID i tabel2? det var sådan jeg forstod det...

altså hvis vi har følgende indhold i de 2 tabeller:
tabel1
id      indhold
1      første indlæg
2      andet indlæg
3      tredje indlæg
4      første indlæg 2

tabel2
emneid  indlægid
1      1
1      2
1      3
4      4

altså at emneID'et er lig id'et på første indlæg i tabel2 ?
Avatar billede lorentsnv Nybegynder
27. september 2006 - 22:57 #4
Vil det ikke være således, at det første indlæg i et emne har lavere id, end næste indlæg?

I så fald vil du vel kunne gøre noget i retning af:

Select brugerID, count(indlægID)
from Tabel1 t1
inner join (Select emneID, min(indlægID) as FirstIndlægID From Tabel2 group by EmneID) t2
on t1.indlægID = t2.FirstIndlægID
group by brugerID
Avatar billede thomasabcd Nybegynder
27. september 2006 - 23:06 #5
lorentsnv, jo det ville virke, men mit db-design gør, at id på indlæg er GUID...øv! Ellers god idé.

ellebaek,
Den ene tabel indeholder alle indlæg, mens den anden indeholder alle emner. Emnerne kunne eksempelvis være biler, film, musik etc. Jeg vil så gerne tælle alle de gange en bruger er den første til at skrive et indlæg om biler, film, musik etc.
Avatar billede pierrehusted Nybegynder
28. september 2006 - 09:04 #6
Jeg savner lidt emre info om din database-opbygning. Men måske noget i den her stil kan gøre det:


SELECT count(*)
FROM (
-- Første svar på alle emner
SELECT e.indlægID, FirstAnswer.svar_id, FirstAnswer.brugerID
FROM emnetabel e
JOIN (
  -- Første svar på et emne
  SELECT TOP 1 svar_id, brugerID
  FROM svartabel s
  WHERE s.indlægID = e.indlægID
    ORDER BY dato desc
) as FirstAnswer
)
WHERE brugerID = ?
Avatar billede thomasabcd Nybegynder
28. september 2006 - 09:26 #7
Pierre, tak for inputtet. Fik det løst med inspiration fra dit forslag
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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