Avatar billede rille101 Nybegynder
23. februar 2007 - 11:16 Der er 12 kommentarer og
1 løsning

Order by "to forskellige felter i to forskellige tabeller"

Hej Har lavet et debatforum,  og på forsiden vil jeg gerne have oplistet de seneste indlæg.

Jeg har lavet udtrækkene som de skal være, men jeg kan kun finde ud af at sortere på eet felt.

SELECT Top 3 debatemne.titel, debatindlaeg.dato, debatindlaeg.ansvarlig, brugere.brugernavn, brugere.fornavn, brugere.efternavn, debatindlaeg.relation
FROM debatemne, brugere, debatindlaeg
WHERE debatindlaeg.ansvarlig = brugere.brugernavn AND debatindlaeg.relation  = debatemne.id
ORDER BY debatindlaeg.dato DESC

Dermed ligger de seneste INDLÆG øverst.
Kan jeg sortere så den af felterne, oprdato og dato, der har den nyeste dato ligger øverst?
Avatar billede michael_stim Ekspert
23. februar 2007 - 11:24 #1
ORDER BY felt1 DESC, felt2ASC osv
Avatar billede rille101 Nybegynder
23. februar 2007 - 12:08 #2
Jeg kunne forestille mig at der skulle en JOIN ind i sætningen, som sammensmelter debatindlaeg.dato og debatemne.oprdato, ellers ville jeg vel få problemer med min repeat, når resultaterne skal listes op.
Avatar billede balderk Nybegynder
23. februar 2007 - 14:36 #3
Joins er ved relationer

Brug access' grafiske query generator til at finde de data, du skal bruge.
Den giver dig automatisk sql'en (vis -> sql-visning).
Avatar billede rille101 Nybegynder
26. februar 2007 - 17:20 #4
Nåh ok. er ikke den største haj i skuffen, når det kommer til sql
Jeg kan ikke finde det der sql-visning.
Hverken under selve tabelvisning eller i oversigtsvinduet.
Skal jeg gøre noget specielt for at få det frem? bruger access 2003
Avatar billede balderk Nybegynder
28. februar 2007 - 10:54 #5
Beklager det sene svar - har været i det mørke nord.

To ting, først alternativ, dernæst svar på seneste

ALTERNATIV
Kan man oprette et emne uden at lave et indlæg?
Bør det ikke altid være sådan, at der til et emne er knyttet et indlæg?
I givet fald, kan du jo nøjes med at sortere på dato for indlæg.


SVAR PÅ SENESTE
Hvis du står inde på en query (i f.eks. design-view), kan du under menuen 'Vis' vælge 'sql-visning'. Den vil så vise sql-koden.

Men, hvis du ikke er så sql-kyndig, vil jeg anbefale, at du laver query'en i design-view.

Du skal sørge for at have relationer mellem de 3 tabeller. Jeg går ud fra, at det er din WHERE, som repræsenterer relationerne.

Sql med joins kan så se således ud:
SELECT DebatEmne.titel, DebatIndlæg.dato, DebatIndlæg.ansvarlig, brugere.brugernavn, brugere.fornavn, brugere.efternavn, DebatIndlæg.Relation
FROM DebatEmne INNER JOIN (DebatIndlæg INNER JOIN brugere ON DebatIndlæg.ansvarlig = brugere.brugernavn) ON DebatEmne.id = DebatIndlæg.Relation
ORDER BY DebatIndlæg.dato DESC;
Avatar billede rille101 Nybegynder
01. marts 2007 - 14:28 #6
ALTERNATIV:
Når man opretter et nyt emne oprettes et id via autonummerering.
Tabellen med Indlæggene har et felt "relation" der relaterer til "id" i "debatemne"
Der forefindes altså en "debatemne.oprdato" og en "debatindlaeg.dato"
Hvis jeg sorterer på dato, så visis alle indlæg, sorteret efter dato, og derefter kommer så alle emnerne.
Jeg vil gerne have dem sorteret alt efter hvad der er nyest, uanset om det er et emne eller et indlæg.

SVAR PÅ SENESTE:
Nu har jeg fundet frem til det, men synes ikke at den giver mig muligheden for en så avanceret sortering.
Avatar billede balderk Nybegynder
01. marts 2007 - 16:22 #7
Er hjemmesiden live, så man kan tage et kig?

Alternativ:
Mit spørgsmål kørte på, om man ikke kunne nøjes med at vise de nyeste indlæg med angivelse af, hvilket emne, de hører til?
Vis felterne DebatIndlæg.dato, DebatEmne.titel, DebatIndlæg.ansvarlig..
Hmm, er der en separat titel på indlægget? (så skal det jo med ovf.)

Seneste:
Du kan have flere forskellige sorteringer, den der kommer først i rækkefølgen har første prioritet.

Har du klokkeslet med i dato? Hvis ikke vil den jo møde en række ens værdier, og derefter sortere efter noget andet.
Avatar billede rille101 Nybegynder
02. marts 2007 - 10:18 #8
Ja det er den.
På forsiden af hjemmesiden, kan man lige nu se seneste debatemner.
Det er den der skal sorteres til både at vise emner og indlæg.

http://www.ballumby.net

Grunden til at jeg ikke blot viser indlæggene på forsiden er, at når man så lige har oprettet et nyt emne, så vil den ikke blive vist på forsiden, og det er jo synd.

Jeg har prøvet en alternativ/fusker løsning.
Idet der oprettes et nyt emne, bliver der samtidig oprettet et tomt indlæg.
På den måde kan få det til at se rigtigt ud på forsiden.
Så opstår der dog et problem, under selve oversigten over debatter, da der ud for hvert emne står, hvor mange kommentarer(indlæg) der er til emnet.
Så starter den jo på 1 i stedet for 0.
Debat-forsiden: http://www.ballumby.net/lokalinfo/debatforum/debat-forside.asp

Der er ikke klokkeslet på. Det skulle jeg måske nok sætte ind, også.

Er villig til at gå alternative veje. Nu skal det sgu bare op og køre...
Avatar billede balderk Nybegynder
02. marts 2007 - 14:15 #9
Hey, fusker-løsninger er også løsninger!

Hvis du kalder det 'antal indlæg' i stedet for 'antal kommentarer', så burde den jo være hjemme :) Alternativt, kan du jo bare trække een fra 'antal kommentarer'.

Og så ændre datatypen til også at inkludere klokkeslet, så burde den være der.
Avatar billede balderk Nybegynder
02. marts 2007 - 14:16 #10
Glemte lige:

Jeg vil råde dig til en anden gang, at navngive, så de relaterede felter hedder det samme på tværs af tabeller. Meget lettere at håndtere.
Avatar billede rille101 Nybegynder
02. marts 2007 - 14:52 #11
Hehe -You said it!
Min tanke var også, at man kunne trække een fra i sql'en, men hvordan hulen gør man det?
Jeg har prøvet lidt af hvert, dog uden resultat.
Hvis nu f.eks. sql'en ser således ud:

SELECT debatemne.indhold, debatemne.id, debatemne.img1, debatemne.titel, debatemne.oprdato, debatindlaeg.relation, Count(debatindlaeg.relation) AS Antal
FROM (brugere LEFT JOIN debatemne ON brugere.brugernavn = debatemne.ansvarlig) LEFT JOIN debatindlaeg ON debatemne.id = debatindlaeg.relation
WHERE (((debatemne.ansvarlig)=[brugere].[brugernavn])) GROUP BY debatemne.titel, debatemne.oprdato, debatindlaeg.relation, debatemne.img1, debatemne.id, debatemne.indhold
ORDER BY debatemne.id DESC;
Avatar billede rille101 Nybegynder
03. marts 2007 - 14:08 #12
Hey! Det fandt jeg selv ud af.

Så nu har jeg så lavet et automatisk usynligt indlæg hver gang man opretter en debat.

Udtrækkene på forsiden viser så bare indlæg, så det ser ud som om det hele er blandet sammen!

Det var dit ALTERNATIV der hjalp mig på vej, så du her har du point. Tak for hjælpen!
Avatar billede balderk Nybegynder
05. marts 2007 - 12:58 #13
Det var da så lidt, tanks!

Kæmp vel!
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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

IT-JOB

Nextway Software A/S

Software Architect

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-Supporter til Svanemøllen

Netcompany A/S

Linux Operations Engineer