Avatar billede axkris Nybegynder
29. august 2005 - 23:32 Der er 10 kommentarer og
1 løsning

Fejl: Værdi gentages ved select

Hej alle

Jeg vil gerne lave en liste over moderatorer, som har skrevet de sidste indlæg (REPLY) i de forumer, som de er tilknyttet (for bedre at kunne overskue, hvem af moderatorne der sidste har været aktivt i deres forum).

Til orientering kan et forum kun have en moderator tilknyttet, og en moderator kan være tilknyttet et forum, så det er jo egentligt meget simpelt ;-)

Dog skriver moderatorne hele tiden indlæg (REPLY), og det er her at problemet opstår, fordi nogle moderatorer optræder flere gange på listen, f.eks. en moderator som optræder på 2. pladsen og igen på 4. pladsen.

Det dur ikke, fordi de skal kun listes med deres seneste dato, dvs. at omtalte moderator kun skal vises på 2. pladsen (og ikke på 4. pladsen).

Kan du hjælpe?

SELECT
  FORUM_MEMBERS.M_FIRSTNAME
FROM FORUM_REPLY INNER JOIN
  FORUM_MEMBERS ON FORUM_REPLY.R_AUTHOR = FORUM_MEMBERS.MEMBER_ID INNER JOIN
  FORUM_MODERATOR ON FORUM_REPLY.FORUM_ID = FORUM_MODERATOR.FORUM_ID AND
  FORUM_MEMBERS.MEMBER_ID = FORUM_MODERATOR.MEMBER_ID
ORDER BY FORUM_REPLY.R_DATE DESC
Avatar billede kjulius Novice
29. august 2005 - 23:46 #1
Jeg er ikke helt sikker på, at jeg har forstået det rigtigt. Men hvis jeg har tolket dit spørgsmål rigtigt burde det vel skulle være noget lignende dette:

SELECT
FORUM_MEMBERS.M_FIRSTNAME, MAX(FORUM_REPLY.R_DATE)
FROM FORUM_REPLY INNER JOIN
FORUM_MEMBERS ON FORUM_REPLY.R_AUTHOR = FORUM_MEMBERS.MEMBER_ID INNER JOIN
FORUM_MODERATOR ON FORUM_REPLY.FORUM_ID = FORUM_MODERATOR.FORUM_ID AND
FORUM_MEMBERS.MEMBER_ID = FORUM_MODERATOR.MEMBER_ID
GROUP BY FORUM_MEMBERS.M_FIRSTNAME
ORDER BY MAX(FORUM_REPLY.R_DATE) DESC
Avatar billede axkris Nybegynder
29. august 2005 - 23:48 #2
Yes, yes, yes :-) Takker, tryk svar :-)

Det var bare max-funktionen jeg skulle bruge :-)
Avatar billede axkris Nybegynder
29. august 2005 - 23:59 #3
Det er vist blevet lidt for kompliceret for mig, kan du ikke også hjælpe mig med at indstætte det i mit eksisterende script (som virker)?

Scriptet er:

SELECT TOP 100 PERCENT FORUM_FORUM.F_SUBJECT, FORUM_MEMBERS.M_FIRSTNAME, FORUM_MEMBERS.M_LASTNAME,
  FORUM_MEMBERS.M_PHOTO_URL, FORUM_FORUM.FORUM_ID, FORUM_MEMBERS.M_HOMEPAGE,
  findDomain(FORUM_MEMBERS.M_HOMEPAGE) AS M_HOMEPAGENew
FROM FORUM_FORUM INNER JOIN
  FORUM_MODERATOR ON FORUM_FORUM.FORUM_ID = FORUM_MODERATOR.FORUM_ID INNER JOIN
  FORUM_CATEGORY ON FORUM_FORUM.CAT_ID = FORUM_CATEGORY.CAT_ID INNER JOIN
  FORUM_GROUPS ON FORUM_CATEGORY.CAT_ID = FORUM_GROUPS.GROUP_CATID INNER JOIN
  FORUM_MEMBERS ON FORUM_MODERATOR.MEMBER_ID = FORUM_MEMBERS.MEMBER_ID
WHERE (FORUM_GROUPS.GROUP_ID = 6) AND (FORUM_CATEGORY.CAT_ID <> 41) AND (FORUM_FORUM.F_STATUS = 1) AND
  (FORUM_MEMBERS.M_PHOTO_URL <> '')
ORDER BY ***R_DATE <-indsættes her ****

Det skal indsættes, så det er det, som den søger på den fundne R_DATE. Og det som skal indsættes er ovenståeden script (næsten):

SELECT
MAX(FORUM_REPLY.R_DATE)
FROM FORUM_REPLY INNER JOIN
FORUM_MEMBERS ON FORUM_REPLY.R_AUTHOR = FORUM_MEMBERS.MEMBER_ID INNER JOIN
FORUM_MODERATOR ON FORUM_REPLY.FORUM_ID = FORUM_MODERATOR.FORUM_ID AND
FORUM_MEMBERS.MEMBER_ID = FORUM_MODERATOR.MEMBER_ID
GROUP BY FORUM_MEMBERS.M_FIRSTNAME
ORDER BY MAX(FORUM_REPLY.R_DATE) DESC
Avatar billede kjulius Novice
30. august 2005 - 00:24 #4
Igen er jeg ikke helt sikker på, om jeg forstår det rigtigt, men her er et hurtigt skud fra bøssen:

SELECT TOP 100 PERCENT FORUM_FORUM.F_SUBJECT, FORUM_MEMBERS.M_FIRSTNAME, FORUM_MEMBERS.M_LASTNAME,
  FORUM_MEMBERS.M_PHOTO_URL, FORUM_FORUM.FORUM_ID, FORUM_MEMBERS.M_HOMEPAGE,
  findDomain(FORUM_MEMBERS.M_HOMEPAGE) AS M_HOMEPAGENew
  MAX(FORUM_REPLY.R_DATE) AS LASTREPLY
FROM FORUM_FORUM INNER JOIN
  FORUM_MODERATOR ON FORUM_FORUM.FORUM_ID = FORUM_MODERATOR.FORUM_ID INNER JOIN
  FORUM_CATEGORY ON FORUM_FORUM.CAT_ID = FORUM_CATEGORY.CAT_ID INNER JOIN
  FORUM_GROUPS ON FORUM_CATEGORY.CAT_ID = FORUM_GROUPS.GROUP_CATID INNER JOIN
  FORUM_MEMBERS ON FORUM_MODERATOR.MEMBER_ID = FORUM_MEMBERS.MEMBER_ID
WHERE (FORUM_GROUPS.GROUP_ID = 6) AND (FORUM_CATEGORY.CAT_ID <> 41) AND (FORUM_FORUM.F_STATUS = 1) AND
  (FORUM_MEMBERS.M_PHOTO_URL <> '')
GROUP BY
PERCENT FORUM_FORUM.F_SUBJECT, FORUM_MEMBERS.M_FIRSTNAME, FORUM_MEMBERS.M_LASTNAME,
  FORUM_MEMBERS.M_PHOTO_URL, FORUM_FORUM.FORUM_ID, FORUM_MEMBERS.M_HOMEPAGE,
  findDomain(FORUM_MEMBERS.M_HOMEPAGE)
ORDER BY MAX(FORUM_REPLY.R_DATE) DESC
Avatar billede axkris Nybegynder
30. august 2005 - 00:37 #5
Jeg skal blot have den til at liste efter den moderator, som har postet det seneste indlæg (reply).

Men den siger: "The column prefix 'FORUM_REPLY' does not match with a tabel name or alias name used in the query." Men FORUM_REPLY eksistere alt, så der må være noget andet galt.

SELECT TOP 100 PERCENT FORUM_FORUM.F_SUBJECT, FORUM_MEMBERS.M_FIRSTNAME, FORUM_MEMBERS.M_LASTNAME,
  FORUM_MEMBERS.M_PHOTO_URL, FORUM_FORUM.FORUM_ID, FORUM_MEMBERS.M_HOMEPAGE,
  findDomain(FORUM_MEMBERS.M_HOMEPAGE) AS M_HOMEPAGENew, MAX(FORUM_REPLY.R_DATE)
  AS LASTREPLY
FROM FORUM_FORUM INNER JOIN
  FORUM_MODERATOR ON FORUM_FORUM.FORUM_ID = FORUM_MODERATOR.FORUM_ID INNER JOIN
  FORUM_CATEGORY ON FORUM_FORUM.CAT_ID = FORUM_CATEGORY.CAT_ID INNER JOIN
  FORUM_GROUPS ON FORUM_CATEGORY.CAT_ID = FORUM_GROUPS.GROUP_CATID INNER JOIN
  FORUM_MEMBERS ON FORUM_MODERATOR.MEMBER_ID = FORUM_MEMBERS.MEMBER_ID
WHERE (FORUM_GROUPS.GROUP_ID = 6) AND (FORUM_CATEGORY.CAT_ID <> 41) AND (FORUM_FORUM.F_STATUS = 1) AND
  (FORUM_MEMBERS.M_PHOTO_URL <> '')
GROUP BY FORUM_FORUM.F_SUBJECT, FORUM_MEMBERS.M_FIRSTNAME, FORUM_MEMBERS.M_LASTNAME,
  FORUM_MEMBERS.M_PHOTO_URL, FORUM_FORUM.FORUM_ID, FORUM_MEMBERS.M_HOMEPAGE,
  findDomain(FORUM_MEMBERS.M_HOMEPAGE)
ORDER BY MAX(FORUM_REPLY.R_DATE) DESC
Avatar billede axkris Nybegynder
30. august 2005 - 00:37 #6
eksistere alt = eksisterer altså
Avatar billede kjulius Novice
30. august 2005 - 00:59 #7
Okay, det er nok fordi jeg tildelte den aliaset LASTREPLY i SELECT.

Prøv at ændre ORDER BY til

ORDER BY LASTREPLY DESC
Avatar billede axkris Nybegynder
30. august 2005 - 01:07 #8
Rettet, men samme fejl igen.
Avatar billede kjulius Novice
30. august 2005 - 09:08 #9
Okay, så prøver vi med

SELECT TOP 100 PERCENT FORUM_FORUM.F_SUBJECT, FORUM_MEMBERS.M_FIRSTNAME, FORUM_MEMBERS.M_LASTNAME,
  FORUM_MEMBERS.M_PHOTO_URL, FORUM_FORUM.FORUM_ID, FORUM_MEMBERS.M_HOMEPAGE,
  findDomain(FORUM_MEMBERS.M_HOMEPAGE) AS M_HOMEPAGENew, MAX(FORUM_REPLY.R_DATE)
  AS LASTREPLY
FROM FORUM_FORUM INNER JOIN
  FORUM_MODERATOR ON FORUM_FORUM.FORUM_ID = FORUM_MODERATOR.FORUM_ID INNER JOIN
  FORUM_CATEGORY ON FORUM_FORUM.CAT_ID = FORUM_CATEGORY.CAT_ID INNER JOIN
  FORUM_GROUPS ON FORUM_CATEGORY.CAT_ID = FORUM_GROUPS.GROUP_CATID INNER JOIN
  FORUM_MEMBERS ON FORUM_MODERATOR.MEMBER_ID = FORUM_MEMBERS.MEMBER_ID INNER JOIN
  FORUM_REPLY ON FORUM_REPLY.R_AUTHOR = FORUM_MEMBERS.MEMBER_ID
WHERE (FORUM_GROUPS.GROUP_ID = 6) AND (FORUM_CATEGORY.CAT_ID <> 41) AND (FORUM_FORUM.F_STATUS = 1) AND
  (FORUM_MEMBERS.M_PHOTO_URL <> '')
GROUP BY FORUM_FORUM.F_SUBJECT, FORUM_MEMBERS.M_FIRSTNAME, FORUM_MEMBERS.M_LASTNAME,
  FORUM_MEMBERS.M_PHOTO_URL, FORUM_FORUM.FORUM_ID, FORUM_MEMBERS.M_HOMEPAGE,
  findDomain(FORUM_MEMBERS.M_HOMEPAGE)
ORDER BY LASTREPLY DESC
Avatar billede axkris Nybegynder
30. august 2005 - 09:08 #10
Prøver :-)
Avatar billede axkris Nybegynder
30. august 2005 - 09:15 #11
Virker - takker mange mange mange gange :-D

Hav en go dag :-)
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