I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
jeg tror ikke du forstår mig. Når jeg mener forskel så mener jeg angående spørgsmålet altså har mysql en anden måde af order by ligesom access har group by?
jeg læste lige dit indlæg igennen en gang til coltau. du mener group by funktionen indholder distinct og order by funktionen?
jeg får ihvertifald en fejl meddelelse ligemeget om jeg bruger distinct eller jeg ikke gør:
Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "Id" som en del af en aggregatfunktion.
SQL: SQL = "SELECT TOP 5 Id FROM Poster GROUP BY date" SQL = "SELECT DISTINCT TOP 5 Id FROM Poster GROUP BY date"
----------- jeg bruger en access database i øjeblikket
Jeg har først haft tid til at kikke nu og jeg kan se at du har prøvet lidt af hvert. Ja group by gør det samme som distinct - men jeg har lagt mærke til at begge kommandoer kræver at du gruppere på de samme felter som du udtrækker.
SQL = "SELECT TOP 5 Id FROM Poster GROUP BY date" SQL = "SELECT DISTINCT TOP 5 Id FROM Poster GROUP BY date"
Begge kommadoner skal give samme udtræk - men der er en grund til at du ikke kan udtrække feltet ID grupperet på feltet, date. Hvis du tænker over det - hvilke ID skal SQL-sætningen så give dig. ?
Eksempel. ID Date 1 12-12-2002 2 14-12-2002 3 12-12-2002
Ovennævnte eksempel. Hvilke ID vil du have i dit udtræk. ? 1 og 2 eller 2 og 3. Det er derfor dit eksempelt ikke virker.
Men - denne her virker. SQL = "SELECT TOP 5 date FROM Poster GROUP BY date" så vil du få. (12-12-2002 og 14-12-2002)
Du skal nok finde en anden måde at trække indholdet ud på.
group by/order by anvendes nogenlunde som følgende. select date,kat from tabel group by date,kat order by date eller kat
Jeg har siddet hele formiddagen og forsøgt at lave udtrækket. (Med kun en SQL-sætning) Jeg kan ikke bevise at det ikke kan lade sig gøre - men jeg kan forsøge at forklare hvorfor. Du ønsker de fem nyeste indlæg - men den samme kategori må ikke gå igen 2 gange.
En SQL-sætning kan kun lave et udtræk hvis du kan angive en naturlig rækkefølge (order by) og derefter har du mulighed for at filtrere udtrækket (WHERE) og evt. gruppere udtrækket. (distinct) I dit tilfælde skal order by være "date, kat" - men filtreringen skal tage hensyn til de poster, der allerede er fundet (kat må ikke findes 2 gange) og det kan den kun med group by eller distinct - men Group by arbejder på den måde at den sammensætter felterne (date,kat) til en entydig værdi og derfor kan den ikke skelne kun på kategorien. I øvrigt kan man med group by/distinct ikke få de øvrige felter med.
Pyha - er du med så langt.
Selvom du måske selv kan løse problemet på anden måde får du alligevel 2 alternative måder hvorpå det kan lade sig gøre.
1. 5 SQL-sætninger der hver især tager højde for det forgående resultat. <% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("test.mdb")
function VisTop5(strKats) if strKats = "" then Set RS = Conn.Execute("select top 1 * from tabel order by date desc") VisTop5 = RS("kat") else Set RS = Conn.Execute("select top 1 * from tabel where not kat in (" & strKats & ") order by date desc") VisTop5 = strKats & "," & RS("kat") end if Response.Write("ID: " & RS("ID") & " " & RS("kat") & " " & RS("Indhold") & "<br>") end function
s = "" for i = 1 to 5 s = VisTop5(s) next %>
2. Gem en kopi af indlæg i en tabel der altid kun indeholder de 5 nyeste indlæg. Det må være noget med at hvis aktuelle kategori allerede findes i tabellen skal den erstattes med nyeste indlæg eller hvis kategori ikke findes i tabellen skal ældste indlæg erstattes med nyeste indlæg.
Jeg gav dig to løsninger. Jeg havde endda testet den ene.
Hvis man vil have hjælp på eksperten skal man jo fordele pointene til dem der gider beskæftige sig med ens problem. Sommetider også selvom de ikke kommer med en løsning. Hvis man gør som du har gjort i dette tilfælde så kan det jo være at du ikke får svar.
jeg kunne ihvertifald ikke få nogen af dine løsninger til at virke.
Jeg kan godt se min fejl, jeg burde have givet dig nogle af pointsene for at vise interesse for spørgsmålet. Jeg synes bare det er spild af plads det med at der oprettes spørgsmål hvor der står (Points til ******) Også uddeler man lige points!
Det er fuldstændig spild af plads, og en af grundende til at eksperten.dk bliver langsomere!
men hvis du vil have dine points, så skal jeg nok oprette et spørgsmål?
Nej - jeg var bare lidt sur fordi jeg havde brugt mere end 2 timer på at teste dit problem og komme med to løsninger. Men hvis du får problemer med din egen løsning så opret et nyt ?. Jeg kan jo se et lille problem hvis det kun er datoen du gemmer i kategorien. Jeg ville nok gemme ID sammen med.
Synes godt om
Ny brugerNybegynder
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.