27. marts 2004 - 22:26Der er
11 kommentarer og 1 løsning
Udvalg på tværs af to tabeller, men så også inden for den ene
Jeg har, til debat-ting, to tabeller med felter, der udsættes for søgning:
tb1: id, traad, indhold (tråden fælles for flere indhold/indlæg) tb2: id, traad, parent, author (parent har forskelligt nr. for de forskellige indlæg i samme tråd, samme author/ navn kan optræde i samme tråd flere gange, dvs. have forskellige parent-nr.).
Den her finder for meget:
$result = mysql_query( "SELECT tb1.*, tb2.* FROM tb1, tb2 WHERE tb1.indhold LIKE '%$find%' AND tb1.traad = tb2.traad ");
Her bliver ETHVERT af trådens indlæg forbundet med ALLE authors, som har deltaget i tråden. Hvordan gå videre, så man for en author kun får det/de indlæg, der er unik(ke). Dvs. indhold efter parent OG author i forskellige kombinationer inden for den enkelte tråd.
Kan det gøres i MySQL, måske i retning af
$result = mysql_query( "SELECT tb1.*, tb2.* FROM tb1, tb2 WHERE tb1.indhold LIKE '%$find%' AND tb1.traad = tb2.traad "); while { $result = mysql_query( "SELECT tb1.*, tb2.* FROM tb1, tb2 WHERE .... ??? (parent && author er unik kombination i tabellen tb2 indenfor hver tråd) "); } }
Jeg forstår simpelthen ikke hvad det er du ønsker at hive ud? Kan du ikke forklare dine tabeller og give eks. på data og fortæller hvad du vil hive ud?
Ovenståede select giver (mindst?) to slags svar afhængig af debattens struktur:
jensen skrev x1-indlæg madsen skrev x1-indlæg selv om jensen skrev x1 (som 'find' er i), madsen x2, men både x1 og x2 er i samme tråd.
petersen skrev x5-indlæg petersen skrev x6-indlæg nielsen skrev x5-indlæg nielsen skrev x6-indlæg selv om petersen skrev x5 og nielsen x6 (og 'find' er i både x5 og x6)
Hvordan får jeg: jensen x1 hhv. petersen x5, nielsen x6? Tabel tb1 har koblet indlæg og tråd med tb2, og tb2 har for hvert enkelt indlæg også parent og author. Øvelsen består så i at få SELECT til, efter den første kobling af tb1 og tb2, at gøre noget ved tb2, så der kun fås forfatterens eget indlæg i tråden.
Jae, bortset fra, at der ikke sendes værdi for author med! Uden dit sidste "AND tb2.author = 'jensen'" selectes alle indlæg i tråden, selv om kun en af dem har 'find' i sig. Kan vi ikke få tråd OG parent (og dermed author) frem for præcis det indlæg, der har 'find'?
Men som jeg ser din tabelopbygning og forstår dit problem, kan det ikke lade sig gøre.
Du har jo ikke noget der linker en tekst sammen med den aktuelle forfatter? eller forstår jeg dig ikke rigtigt?
Du har jo teksten stående i tb1 sammen med tråd ID'et. Det tråd ID forekommer også i tb2 - Men her forekommer det mange gange. eller har trådID fra tb2 intet med tråd ID fra tb1 at gøre?
Jeg tror du har ret, det kan ikke lade sig gøre med denne opbygning - det synes jeg bare det kunne, der hvor jeg tog det fra!
Parent i tb2 refererer ikke til id i tb1.
Meeen det vil vel altid i en debat/ et forum, der registerer brugernes indlæg efterhånden som de kommer (id og indhold i tb1) være sådan, at rækkefølgen svarer til den for samme tråd i tb2 - tb2s rækker for en given tråd svarer til rækkerne i tb1.
Så det må kunne lade sig gøre at få tb1 id10, id11, id12, id13, id14 for tråd 4 til at passe med id - ja hvad, altid samme antal id i tb2? - enten tilsvarende id11...id14, eller id30...id34, i tb2.
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.