Thomas. Skrevet 10. mai 2009 Del Skrevet 10. mai 2009 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 Lenke til kommentar
Mats Danielsen Skrevet 10. mai 2009 Del Skrevet 10. mai 2009 Jeg forstår 0 av hva du vil frem til. Lenke til kommentar
Jonas Skrevet 10. mai 2009 Del Skrevet 10. mai 2009 Hva er feil i denne? Tja, si det. Jeg spør det samme; hva er egentlig feil? Får du en feilmelding eller returnerer ikke spørringen det resultatet du ønsker? Lenke til kommentar
Edorph Skrevet 10. mai 2009 Del Skrevet 10. mai 2009 (endret) 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 10. mai 2009 av Edorph Lenke til kommentar
Thomas. Skrevet 10. mai 2009 Forfatter Del Skrevet 10. mai 2009 Jeg tror det han er ute etter er å hente ut forum sortert etter hvilket forum som har nyeste svar. Ja, det er hva jeg vil. Lenke til kommentar
Thomas. Skrevet 10. mai 2009 Forfatter Del Skrevet 10. mai 2009 Edorph: Koden din returnerer ingenting. Men det er rader i tabbelen. Lenke til kommentar
Edorph Skrevet 10. mai 2009 Del Skrevet 10. mai 2009 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
Thomas. Skrevet 10. mai 2009 Forfatter Del Skrevet 10. mai 2009 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: 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
Edorph Skrevet 10. mai 2009 Del Skrevet 10. mai 2009 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
OIS Skrevet 10. mai 2009 Del Skrevet 10. mai 2009 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
Thomas. Skrevet 10. mai 2009 Forfatter Del Skrevet 10. mai 2009 Antar at feltet dato er datetime. Nei, det er varchar. Skal det være datetime? Lenke til kommentar
OIS Skrevet 10. mai 2009 Del Skrevet 10. mai 2009 Nei, det er varchar. Skal det være datetime? Tror det vil være bedre. Da kan du sammenligne tråder og poster basert på tid. Og da skal spørringen min virke. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå