LIGHT BULB!  Thank you SO much.  This has made a lot of things connect for 
me.  

On Wednesday, November 28, 2012 3:12:56 PM UTC-8, Niphlod wrote:
>
> uhm? seems the case for a join (if you are not on GAE)
> p = db.providers
> g = db.games
> pg = db.provider_games
> result = db(
>     (p.key == providerKey) & #make sure you have a valid providerKey
>     (g.key == gameKey) & #make sure you have a valid gameKey
>     (pg.providerID == p.id) & #link the providers table to the 
> providers_game table
>     (pg.gameID == g.id) #link the games table to the providers_game table
> ).select().first()
>
> if not result:
>     return 'trying to fake keys'
> else:
>     return 'good to go'
>
>
> On Wednesday, November 28, 2012 11:58:34 PM UTC+1, pumplerod wrote:
>>
>> I'm having trouble finding a clear example of this and I feel like what 
>> I'm doing is far more complicated than it should be.  I'm sure someone in 
>> this group can show me a more elegant solution...
>>
>> I have a table of Providers and a table of Games.  Each provider can have 
>> multiple games so I also have a table: providers_games which is just a list 
>> of providerID and gameID
>>
>> to validate incoming data a query must have a secret_key for the provider 
>> and a secret_key for the game.  I first find the providerID by looking up 
>> the provider_secret_key then find the gameID by looking up the 
>> game_secret_key.
>>
>> Now I want to check to make sure that there is, indeed, an entry  in 
>> providers_games where providers_games.providerID == foundProviderID and 
>> provider_games.gameID == foundGameID
>>
>> I thought some clever use of IS_IN_DB would be my solution but that seems 
>> to be eluding me.
>>
>> my sudo-code:
>>
>> provider, = db(db.providers.key == providerKey).select()
>> game, = db(db.games.key == gameKey).select()
>> qset = db()
>> qset = qset(db.providers_games.providerID == provider.id)
>> qset = qset(db.providers_games.gameID == game.id)
>> result, = qset.select()
>>
>> This is pretty ugly.  I'm sure there is a better way.
>>
>

-- 



Reply via email to