Cheers Dom. I read that NOT EXISTS did little or nothing for performance in
this case. Of course I can't point you to where I read that!

Anyone know for sure?

Adrian

> -----Original Message-----
> From: Dominic Watson [mailto:[email protected]]
> Sent: 13 January 2009 13:48
> To: cf-talk
> Subject: Re: need some database advice
> 
> >SELECT TOP 1 itemID
> >FROM item
> >WHERE itemID NOT IN (
> >       SELECT itemID
> >       FROM vote
> >       WHERE userID = theUserVoting
> >)
> 
> That doesn't work? Should work fine, as should NOT EXISTS:
> 
> SELECT TOP 1 i.itemID
> FROM item i
> WHERE NOT EXISTS (
>        SELECT v.itemID
>        FROM vote v
>        WHERE v.itemId = i.itemId
>        AND v.userID = theUserVoting
> )
> 
> Dom
> 
> 
> 
> 2009/1/13 Adrian Lynch <[email protected]>:
> > I'm doing the same but with voting. People get to vote once per item
> and I
> > store this so they can't vote again.
> >
> > I'm doing something like:
> >
> > SELECT vote
> > FROM vote
> > WHERE userID = theUserVoting
> > AND itemID = theItemTheyreAttemptingToVoteFor
> >
> > This runs a lot and so far so good.
> >
> > What I AM having problems with is getting a random item that they've
> yet to
> > vote for.
> >
> > I have this:
> >
> > SELECT TOP 1 itemID
> > FROM item
> > WHERE itemID NOT IN (
> >        SELECT itemID
> >        FROM vote
> >        WHERE userID = theUserVoting
> > )
> >
> > I've read around a bit and EXISTS might be the way forward but the
> examples
> > I've read use IN and not NOT IN.
> >
> > Any ideas?
> >
> > Sorry for the half-a-thread hijack!
> >
> > Adrian
> >
> >> -----Original Message-----
> >> From: Mike Soultanian [mailto:[email protected]]
> >> Sent: 13 January 2009 07:37
> >> To: cf-talk
> >> Subject: need some database advice
> >>
> >> Hey Everyone,
> >> I have a project and I'm trying to figure out the best way to go
> about
> >> it.  What I want to do is keep track of what songs a user has
> listened
> >> to and what songs they haven't.  The first thing that comes to mind
> is
> >> a
> >> table with song IDs and a table with user IDs and a join table
> between
> >> the two that keeps track of what song a user has listened to.  With
> >> 50,000 songs, that could be a lot of records in the join table.  Is
> >> there a more efficient way to tackle this kind of problem?  I don't
> >> think I'll have that many users, but even if I had ten users, that
> >> table
> >> could be pretty big.
> >>
> >> I'm trying to think if there are any tricks such as whether to store
> if
> >> a user has listened to a track or store if they haven't.  I plan to
> >> have
> >> a button called "mark all as listened", which could empty the join
> >> table
> >> of any records pertaining to that user if I was storing the tracks
> they
> >> didn't listen to.  So the join table would initially start out very
> >> large for a user and then drop down... that's just one thought I
> had.
> >>
> >> If anyone has any tricks, I'd appreciate your advise!
> >>
> >> Thanks,
> >> Mike


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to 
date
Get the Free Trial
http://ad.doubleclick.net/clk;207172674;29440083;f

Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:317846
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4

Reply via email to