Skaptrollet Skrevet 29. juli 2006 Del Skrevet 29. juli 2006 (endret) Hei, Jeg har to tabeller: forum_topics som har topic_id og topic_dato og topic_sticky, og forum_svar som har svar_topic og svar_dato Det jeg ønsker er å hente ut alle topicene, sortert etter: 1. topic_sticky DESC (alle med samme topic_sticky verdi skal sorteres etter topic_id) 2. svar_dato eller topic_dato Altså alle sticky topics først hvor disse er sortert etter topic_id, og videre skal alle sorteres etter topic_dato, men hvis topicen har et innlegg eller flere skal datoen til det siste innlegget brukes istedet til sorteringen. Noen som klarer å få til dette med en spørring? eller må jeg ty til flere spørringer? kjører btw mysql forum_topics CREATE TABLE `forum_topics` ( `topic_id` int(11) NOT NULL auto_increment, `topic_subkategori` int(11) NOT NULL, `topic_forfatter` int(11) NOT NULL, `topic_overskrift` varchar(255) NOT NULL, `topic_tekst` longtext NOT NULL, `topic_dato` datetime NOT NULL, `topic_endret` datetime NOT NULL, `topic_stengt` int(11) NOT NULL, `topic_sticky` int(11) NOT NULL, `topic_slettet` int(11) NOT NULL, PRIMARY KEY (`topic_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; forum_svar CREATE TABLE `forum_svar` ( `svar_id` int(11) NOT NULL auto_increment, `svar_topic` int(11) NOT NULL, `svar_forfatter` int(11) NOT NULL, `svar_overskrift` varchar(255) NOT NULL, `svar_tekst` longtext NOT NULL, `svar_dato` datetime NOT NULL, `svar_endret` datetime NOT NULL, `svar_slettet` int(11) NOT NULL, PRIMARY KEY (`svar_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; Endret 29. juli 2006 av WaBBiT Lenke til kommentar
Skaptrollet Skrevet 29. juli 2006 Forfatter Del Skrevet 29. juli 2006 (endret) EDIT: Dreit meg ut.. trenger fortsatt hjelp Endret 29. juli 2006 av WaBBiT Lenke til kommentar
roac Skrevet 29. juli 2006 Del Skrevet 29. juli 2006 (endret) Hei,Jeg har to tabeller: forum_topics som har topic_id og topic_dato og topic_sticky, og forum_svar som har svar_topic og svar_dato Det jeg ønsker er å hente ut alle topicene, sortert etter: 1. topic_sticky DESC (alle med samme topic_sticky verdi skal sorteres etter topic_id) 2. svar_dato eller topic_dato Altså alle sticky topics først hvor disse er sortert etter topic_id, og videre skal alle sorteres etter topic_dato, men hvis topicen har et innlegg eller flere skal datoen til det siste innlegget brukes istedet til sorteringen. Noen som klarer å få til dette med en spørring? eller må jeg ty til flere spørringer? kjører btw mysql 6579270[/snapback] Vel, de to tingene du trenger å se på er operatoren UNION som slår sammen to resultatsett, samt ORDER BY som du trenger for å sortere hvert av resultatsettene dine. Ellers vil jeg få anbefale SQL Programming Style av Joe Celko, samt Database Design av Stephens/Plew. Den første boken omhandler blant annet god navnegivning av tableller, kolonner med mer, den andre databasedesing, mao struktur på tabellene. Jeg kan ikke se at den splittingen du foretar i to tabeller er hensiktsmessig. Til slutt, det er veldig fint om legger med kode for generering av de aktuelle tabeller når du poster, for det gjør det mye lettere for andre å se hva du faktisk har gjort, og det gjør det mulig evt å lage en fiks ferdig løsning på de problemene du måtte støte på. Endret 29. juli 2006 av roac Lenke til kommentar
Skaptrollet Skrevet 29. juli 2006 Forfatter Del Skrevet 29. juli 2006 (endret) tusen takk for informativt svar, men du mener ikke oppdelingen er hensiktsmessig? Hva legger du bak dette? Kunne du gått litt nærmere inn på hva du mener, og eventuelle forslag til forbedringer? Takk på forhånd! EDIT: har lagt til tabell info i første post! Endret 29. juli 2006 av WaBBiT Lenke til kommentar
roac Skrevet 29. juli 2006 Del Skrevet 29. juli 2006 Hva legger du bak dette? Kunne du gått litt nærmere inn på hva du mener, og eventuelle forslag til forbedringer. 6579517[/snapback] En trådstart og et svar er begge deler en post i et slikt system, og av har av natur tilsvarende egenskaper, og bør således ligge i en egen tabell. Det du evt kan gjøre er å lage en egen tabell for tråder, evt med en kobling til den frøste posten for å kunne begynne å lage treet. Videre bør postene ha en kobling til den posten de eventuelt er et svar på. Når det gjelder navngivning så er det ingen grunn til å inkludere tabellnavn eller tilsvarende på kolonenne. Det finnes selvfølgelig unntak, men de oppdager du fint selv når du evt får behov for det. Mao, i steden for CREATE TABLE test ( test_id int, test_name varchar(20), test_start datetime, test_finish datetime ); Vil jeg heller anbefale CREATE TABLE test ( id int, name varchar(20), start datetime, finish datetime ); Lenke til kommentar
Skaptrollet Skrevet 29. juli 2006 Forfatter Del Skrevet 29. juli 2006 Hørtes smart ut, jeg så bare at phpbb hadde en egen tabell til trådstart og alle svar deretter og tenkte at det var det lureste, men det er kanskje enklere å bruke bare en tabell til det bare ha et felt i post tabellen med f.eks svartil også er den tom er det en trådstart, og hente ut et tre nedover, men jeg ser for meg at det vil være mye større belastning på server å gjøre det på den måten, i forhold til phpbb måten.. eller? Lenke til kommentar
roac Skrevet 29. juli 2006 Del Skrevet 29. juli 2006 Hørtes smart ut, jeg så bare at phpbb hadde en egen tabell til trådstart og alle svar deretter og tenkte at det var det lureste, men det er kanskje enklere å bruke bare en tabell til det bare ha et felt i post tabellen med f.eks svartil også er den tom er det en trådstart, og hente ut et tre nedover, men jeg ser for meg at det vil være mye større belastning på server å gjøre det på den måten, i forhold til phpbb måten.. eller? 6580305[/snapback] Nei, det vil bare være en tung operasjon vis databasen er dårlig indeksert. En spørring på formen SELECT kolonner FROM tabell WHERE kolonnne IS NULL skal være kjapp, hvis ikke er jeg fristende til å si at det er noe galt med oppsettet/tuningen av databaseserveren. 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å