Avatar billede dennism Nybegynder
10. april 2003 - 21:28 Der er 12 kommentarer og
2 løsninger

mySQL foresp.

Jeg har denne mySQL foresp + while:

$mysql2 = mysql_query("SELECT * FROM forum_indlaeg ORDER BY dato DESC LIMIT 0,3");
while($row2 = mysql_fetch_array($mysql2)) {
}

Som det er der, så henter den de 3 sidst nye forum-indlæg (evt. et indlæg fra den samme tråd mere end én gang), men hvordan kan jeg gøre sådan at den ikke finder en række som har den samme værdi i forum_traad som er blevet vist én gang?

Sig lige til hvis I ikke forstår hvad jeg mener..
Avatar billede clausjul Nybegynder
10. april 2003 - 21:30 #1
SELECT * FROM forum_indlaeg ORDER BY dato DESC LIMIT 0,3 GROUP BY id?
Avatar billede dennism Nybegynder
10. april 2003 - 21:32 #2
clausjul >>

Kan du ik lige forklare hvordan den GROUP BY virker?
Id'et på forum-tråden ligger i forum_traad...

Er det så bare:
SELECT * FROM forum_indlaeg ORDER BY dato DESC LIMIT 0,3 GROUP BY forum_traad

?
Avatar billede clausjul Nybegynder
10. april 2003 - 21:38 #3
Mit forslag er ikke korrekt... prøv denne:
SELECT DISTINCT forum_traad FROM forum_indlaeg ORDER BY dato DESC LIMIT 0,3

Så må du lave en ny select ud fra disse forum_traad, som du fik ud af din første select.
Avatar billede dennism Nybegynder
10. april 2003 - 21:40 #4
Claus >>

Vil du ik lige forklare mig hvad disse funktioner gør? Jeg har aldrig prøvet at arbejde med dem før..
Hvad gør "DISTINCT"?

Jeg forstår ik lige hvad du mener ved at jeg må lave en ny select!?
Avatar billede clausjul Nybegynder
10. april 2003 - 21:44 #5
DISTINCT gør, at forum_traad bliver unikke. Du kan også skrive

SELECT DISTINCT forum_traad, felt2, felt3 ...  FROM forum_indlaeg ORDER BY dato DESC LIMIT 0,3
Avatar billede dennism Nybegynder
10. april 2003 - 21:46 #6
clausjul >>

Hvad mener du så med den select?
Avatar billede clausjul Nybegynder
10. april 2003 - 21:47 #7
Glem det - det behøves ikke.
Avatar billede dennism Nybegynder
10. april 2003 - 21:54 #8
Det fungerer ikke helt korrekt...

Jeg har denne kode nu:

$mysql2 = mysql_query("SELECT DISTINCT traad_id FROM forum_indlaeg WHERE forum_id = '$row[id]' ORDER BY dato DESC LIMIT 0,3");
while($row2 = mysql_fetch_array($mysql2)) {
echo"$row2[traad_id],  ";
}

Den printer: 3, 2, 1

Hvis jeg så fjerner det "DISTINCT", så printes det i denne rækkefølge:
2, 3, 2

Altså er der et eller andet galt.. Den med "DISTINCT" skulle jo gerne printe noget hvor de to første er "2, 3"!..

Hvad er der galt?
Avatar billede dennism Nybegynder
11. april 2003 - 08:05 #9
Kan du ikke hjælpe!?
Avatar billede clausjul Nybegynder
11. april 2003 - 08:11 #10
Jo, jeg var bare væk fra puteren i går - men er back to bizz. Hm.. Jeg tror at jeg har misforstået dig. Men jeg prøver at skære det ud i pap:

Du ønsker at de 3 nyeste forumtråde SKAL være i 3 forskellige tråde?

ID 1: Tråd 1
ID 2: Tråd 2
ID 3: Tråd 3

og ikke

ID 1: Tråd 1
ID 2: Tråd 2
ID 1: Tråd 1

?

Umiddelbart ser din SQL korrekt ud og hvorfor skal den printe de to første 2 og 3?
Avatar billede dennism Nybegynder
11. april 2003 - 14:26 #11
Som tak for at du fortsætter med at hjælpe, så har jeg lidt smidt lidt flere point på...

Men... Jeg tror ikke du forstår hvad jeg vil!

Jeg har som sagt denne foresp.:
$mysql2 = mysql_query("SELECT traad_id FROM forum_indlaeg WHERE forum_id = '$row[id]' ORDER BY dato DESC LIMIT 0,3");

Det jeg vil, er at den skal finde de tre nyeste rækker i tabellen "forum_indlaeg" (udfra dato). En af kolonnerne i tabelen hedder traad_id, og indeholder ID'et på den tråd som forum-indlæget er skrevet til.
Hvis vi så forestiller os, at to af de tre nyeste indlæg er skrevet til den samme forum-tråd, så bliver det samme forum-indlæg printet to gange.. Det er så dette jeg vil forhændre!..

Jeg ved ikke om du forstår mig nu!?
Avatar billede dennism Nybegynder
11. april 2003 - 22:12 #12
Forstår du min forklaring?
Avatar billede dennism Nybegynder
12. april 2003 - 15:29 #13
Kan du hjælpe eller hvad!?
Avatar billede dennism Nybegynder
12. april 2003 - 16:52 #14
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