Re: Inner join woes... and sweet tea!

From: Date: Mon, 05 Jul 2010 13:14:49 +0000
Subject: Re: Inner join woes... and sweet tea!
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-306690@lists.php.net to get a copy of this message
On 5 July 2010 15:02, Jason Pruim <lists@pruimphotography.com> wrote: > Hi everyone, > > I'll admit right now that I'm still trying to wrestle with inner joins... > Which leaves me with this code right here: > > <?PHP > > if(isset($_GET['cat'])) { >            $cat = mysql_real_escape_string($_GET['cat']); > >        } > >        if(isset($cat)) { >               $sql = "SELECT * FROM ".$cfgtableContent." INNER JOIN > ".$cfgtableCategories." WHERE ".$cfgtableContent.".postCat = > ".$cat." ORDER > BY ".$cfgtableContent.".postNumber DESC"; > >        } > > ?> > > Now... I know the problem is probably staring an experienced inner join > master in the face and I don't even have to say it... But for those who > don't know or you might be searching the archives and want to learn from my > blatant misunderstanding of inner joins I'll outline said problem in the > following lines. > > What I want to achieve: Add navigation by category to my blog. IE: If I want > to display just Personal posts click on the "Personal" link and all other > posts magically disappear. > > What I'm getting now: I have 5 categories in my blog now... I get 5 copies > of each post repeated down the site all with a different category... > > All the variables are filled in correctly which I have checked with simple > echo's. I have also tried removing the escaping of the data with no change > so if possible I'd like to leave it in there as is :) > > I have also tried switching it from the above to this: > > <?PHP > >               $sql = "SELECT * FROM ".$cfgtableContent." INNER JOIN > ".$cfgtableContent." WHERE ".$cfgtableCategories.".postCat = > ".$cat." ORDER > BY ".$cfgtableContent.".postNumber DESC"; > > ?> > > with no change... > There's no join clause in your query, i.e. nothing to tie the two tables together. That will leave you with a cartesian product, i.e. for every row in table a you'll get the entire table b joined on. You need to specify how the tables you're joining together are related. Something like SELECT a.row FROM a JOIN b ON b.a_id = a.id Regards Peter -- <hype> WWW: http://plphp.dk / http://plind.dk LinkedIn: http://www.linkedin.com/in/plind BeWelcome/Couchsurfing: Fake51 Twitter: http://twitter.com/kafe15 </hype>

« previous php.general (#306690) next »