TheClown Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 (endret) Heisann, jeg har lest en del om MySQL på internett, men det meste jeg har lest er på Engelsk. Jeg sliter litt med å forstå inner og outer og left og right join. Kan noen være så snille å linke meg til en god norsk guide eller skrive noen korte linjer her? - På forhånd takk Endret 12. oktober 2007 av TheClown Lenke til kommentar
Bruker30050 Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 Inner join mellom to tabeller henter kun ut resultatene som kan linkes mellom begge tabellene, mens outer join henter i tillegg ut resultater som ikke finnes. Outer join finnes i tre varianter, left, right, og full. Har man da en spørring som går mot to tabeller med left, vil man få ut gyldige verdier for alle rader i den første tabellen, mens rader som ikke kan kobles i den andre tabellen vil inneholde nullverdier. Right er omvendt og full er begge deler. Lenke til kommentar
TheClown Skrevet 10. oktober 2007 Forfatter Del Skrevet 10. oktober 2007 Altså i databasen min går det igjen 3 verdier, user_id, link_id og cat_id. Når jeg lager objekter bruker jeg bare en verdi for å finne ut hvilke brukernavn som har postet. Da lagrer jeg bare user_id'en, den er lik i alle tabelene, og i tablet user ligger user_id og username ved siden av hverandre. jeg pleier å bruke t1.user_id, t2.user_id, t2.username FROM [blablabla] t1, user t2 WHERE t1.user_id = t2.user_id Hvordan får jeg til det samme med inner/outer slik at jeg også kan hente mer info som er linket sammen med brukernavn/bruker id i tablet user? Lenke til kommentar
Bruker30050 Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 SELECT t2.username , t1.* FROM [blablabla] AS t1 INNER JOIN user AS t2 ON t2.user_id = t1.user_id Lenke til kommentar
TheClown Skrevet 10. oktober 2007 Forfatter Del Skrevet 10. oktober 2007 Vil det gi akkurat samme resultat? Hva funker her av right og left da? Lenke til kommentar
Bruker30050 Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 Ja, det er identisk. Du får nesten lese deg litt til hva outer join gjør selv. Lenke til kommentar
TheClown Skrevet 10. oktober 2007 Forfatter Del Skrevet 10. oktober 2007 Jeg har testet i hele dag på forskjellige muligheter. Det funker fint med følgende spørring, men jeg skulle gjerne hatt med WHERE t1.com_id = $pageid, hvor setter jeg den? Får fine feil uansett hvor jeg setter den $getcomment = "SELECT t1.com_id, t1.link_id, t1.user_id, t1.com_posted, t1.com_text, t1.visible, t2.user_id, t2.username FROM comments AS t1 INNER JOIN user AS t2 ON t2.user_id = t1.user_id"; Lenke til kommentar
Bruker30050 Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 Jøss. I en WHERE-klausul? Lenke til kommentar
TheClown Skrevet 10. oktober 2007 Forfatter Del Skrevet 10. oktober 2007 (endret) $getlink = "SELECT t1.link_id, t1.link_title, t1.link_url, t1.link_desc, t1.link_posted, t1.user_id, t2.user_id, t2.username, t1.cat_id, t3.cat_id, t3.cat_name FROM link t1, user t2, cat t3 WHERE t1.link_id = $_GET[id] AND t1.user_id = t2.user_id AND t1.cat_id = t3.cat_id WHERE t1.link_id = $pageid ORDER BY t1.com_id DESC"; gir følgende feilmelding: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE t1.link_id = ORDER BY t1.com_id DESC' at line 1 Endret 10. oktober 2007 av TheClown Lenke til kommentar
Bruker30050 Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 (endret) Jaha. Og... du ser at $pageid er en tom variabel? Jøss. Er nok noe php-syntaks du må fikse der først. Kjenner ikke til php selv, men det er sikkert noe så barnslig som at du kjapt kan løse det med: t3.cat_id WHERE t1.link_id = " + $pageid + " ORDER BY t1.com_id DESC"; Vær forøvrig forsiktig med å bruke denslags, da det utgjør en gigantisk SQL-injection risiko. Eller hva nå streng-sammenslåingsoperatoren er i php. Endret 10. oktober 2007 av Bruker30050 Lenke til kommentar
TheClown Skrevet 10. oktober 2007 Forfatter Del Skrevet 10. oktober 2007 t3.cat_id WHERE t1.link_id = ".$pageid." ORDER BY t1.com_id DESC"; er riktig å bruke der, men det har ikke noe å si, det blir feil uansett Lenke til kommentar
Bruker30050 Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 Jøss. WHERE t1.link_id = $_GET[id] AND t1.user_id = t2.user_id AND t1.cat_id = t3.cat_id WHERE t1.link_id = $pageid ORDER BY t1.com_id DESC"; Hvor mange WHERE har du der? Lenke til kommentar
TheClown Skrevet 10. oktober 2007 Forfatter Del Skrevet 10. oktober 2007 Iiiik, jeg kopierte og redigerte i feil spørring Haha $getcomment = "SELECT t1.com_id, t1.link_id, t1.user_id, t1.com_posted, t1.com_text, t1.visible, t2.user_id, t2.username FROM comments AS t1 INNER JOIN user AS t2 ON t2.user_id = t1.user_id WHERE t1.link_id = $pageid ORDER BY t1.com_id DESC"; Var det jeg mente. Den gir feilmelding: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY t1.com_id DESC' at line 1 Lenke til kommentar
Bruker30050 Skrevet 10. oktober 2007 Del Skrevet 10. oktober 2007 Jaja. Får heller hjelpe deg på IM da, dette ble mye frem og tilbake. Sender PM. Lenke til kommentar
TheClown Skrevet 12. oktober 2007 Forfatter Del Skrevet 12. oktober 2007 Ingen ander her som kan hjelpe meg Lenke til kommentar
blackbrrd Skrevet 12. oktober 2007 Del Skrevet 12. oktober 2007 pageid variablen din er tom, så når databasen får sql selecten så ser den slik ut You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE t1.link_id = (her skulle pageid vært, men den variabelen er tom) ORDER BY t1.com_id DESC' at line 1 Lenke til kommentar
TheClown Skrevet 12. oktober 2007 Forfatter Del Skrevet 12. oktober 2007 Forsatt feil med: $getcomment = "SELECT t1.com_id, t1.link_id, t1.user_id, t1.com_posted, t1.com_text, t1.visible, t2.user_id, t2.username FROM comments AS t1 INNER JOIN user AS t2 ON t2.user_id = t1.user_id WHERE t1.link_id = $_GET[link] ORDER BY t1.com_id DESC"; You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY t1.com_id DESC' at line 1 Lenke til kommentar
roac Skrevet 13. oktober 2007 Del Skrevet 13. oktober 2007 Når du har fått så klar hentydning om problemstilling, hvorfor ikke ta seg bryet med å SKRIVE ut sql spørringen du genererer, og se om den faktisk blir riktig. For meg ser dette ut som et PHP-problem, og ikke et databaseproblem. Problemenere mot databasen synes bare å være symptomet. Lenke til kommentar
TheClown Skrevet 13. oktober 2007 Forfatter Del Skrevet 13. oktober 2007 her er hele scriptet. Håper det hjelper Lenke til kommentar
blackbrrd Skrevet 13. oktober 2007 Del Skrevet 13. oktober 2007 få tråden flyttet til php forumet? 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å