Gå til innhold

Sortere rader utifra en anen tabbel?


Anbefalte innlegg

Jeg får ikke svar i database-forumet, å det haster litt så jeg prøver her.

 

SELECT * FROM forum LEFT JOIN forum_svar ON forum_svar.id2=forum.id WHERE gjeng = '{$g_id}' AND sticky = '0' ORDER BY forum_svar.id DESC LIMIT $start_hent, 15

 

Hva er feil i denne?

 

Jeg skal: sortere radene i FORUM etter SISTE ID som er lagt til i FORUM_SVAR. ID2 i FORUM_SVAR = id.forum.

Skal man bruke LEFT JOIN til dette? Eventulet noe annet?

 

Øh, vis det var litt uklart - så får dere si ifra , så skal jeg prøve å forklare bedre :p

Lenke til kommentar
Videoannonse
Annonse

Jeg tror det han er ute etter er å hente ut forum sortert etter hvilket forum som har nyeste svar. Noen sånn som dette kanskje?

 

SELECT *, max(forum_svar.id) AS siste_svar_id 
FROM forum JOIN forum_svar ON forum_svar.id2=forum.id 
WHERE gjeng = '{$g_id}' AND sticky = '0' 
GROUP BY forum.id 
ORDER BY siste_svar_id DESC LIMIT $start_hent, 15

Endret av Edorph
Lenke til kommentar

Okay. Sånn umiddelbart ser jeg at dersom et forum ikke har noen svar, så vil det ikke bli listet ut med min spørring. Det kan du løse ved å bruke left join sånn som du hadde i utgangspunktet.

 

Hvis du fremdeles ikke får returnert noen rader, så kan du jo prøve å ta vekk where-linja. Det er ikke så lett å si hva som er problemet uten å ha tabell-strukturene og noe eksempeldata.

Lenke til kommentar
Okay. Sånn umiddelbart ser jeg at dersom et forum ikke har noen svar, så vil det ikke bli listet ut med min spørring. Det kan du løse ved å bruke left join sånn som du hadde i utgangspunktet.

 

Hvis du fremdeles ikke får returnert noen rader, så kan du jo prøve å ta vekk where-linja. Det er ikke så lett å si hva som er problemet uten å ha tabell-strukturene og noe eksempeldata.

 

Det løste seg ikke ved å bruke noen av metodene, men her er et bilde:

 

2lvn11u.jpg

 

 

Som sagt, det er rader i tabellen forum. Men vises ikke med denne spørringen. Men riktig som du sier, det blir ikke listet ut når svar tabbelen er tom.

 

Hvordan skal jeg fikse det?

Lenke til kommentar

Jeg kan bare se to grunner til at den ikke skulle returnere noen rader. Enten er det fordi tabellen "forum" er tom eller så er det fordi det er null rader med gjeng=1 og sticky=0.

 

Det er mulig jeg overser noe. Du får altså ut rader hvis du kjører følgende?

 

SELECT * FROM forum WHERE gjeng='1' AND sticky='0'

Lenke til kommentar

Kanskje ikke helt optimal, men den skal funke. Antar at feltet dato er datetime.

 

(select f.*, f.dato as dato2 
from forum as f 
where 0 = (select count(fs.id2) from forum_svar as fs where f.id = fs.id2))
UNION 
(select f.*, s.dato as dato2 
from forum as f, forum_svar as s 
where f.id = s.id2 and s.id = (select fs.id from forum_svar as fs where fs.id2 = f.id order by fs.dato desc limit 1)) order by dato2 desc

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...