"Augustus" <Imperial.Palace@Rome.com> wrote in message
news:bvrtci$10f5pa$1@ID-97594.news.uni-berlin.de...[color=blue]
> Hiya!
>
> I have a question:
>
> I have 2 tables... "Inventory" and "Price"
>
> These tables are used by 2 restaurants... the inventory has what they[/color]
sell,[color=blue]
> and prices has the corresponding prices to those items for each[/color]
location.[color=blue]
>
> What I want to do:
> I want to get a list of all items in the "Inventory" table and the
> corresponding price from the "Price" table for a location, unless the[/color]
column[color=blue]
> "SHOW" (in the "Price" table) is set to "N"
>
> It might sound like "Just use a LEFT JOIN"... but if there is no entry[/color]
for[color=blue]
> the item in the "Price" table, I still want a result
>
> I tried using:
> ===============
> select i.name, p.price1
> from inventory i
> LEFT JOIN prices p
> ON p.itemID=i.itemID
> where (
> (i.itemType=7)
> AND (i.canusa='usa')
> AND (p.storeID=99)
> AND (p.show='y')
> )
>
> ===============
>
> But that only returns the items that have prices set up in the prices
> table...
>
> So I tried adding
> ===============
> OR (NOT EXISTS (SELECT * FROM prices where (p.itemID=i.itemID) AND
> (i.itemType=7))
> )
> ===============
>
> to the end of the WHERE conditions, but this returns everything in the
> inventory table
>
> I then tried changing the whole statement to:
>
> ===============
> select i.name, p.price1
> from inventory i
> LEFT JOIN prices p
> ON p.itemID=i.itemID
> where (
> (i.itemType=7)
> AND (i.canusa='usa')
> AND (p.storeID=99)
> AND (p.show='y')
> )
> OR (i.itemType=7)
> AND (i.canusa='usa')
> AND (NOT EXISTS (SELECT * FROM prices where (p.itemID=i.itemID) AND
> (i.itemType=7)))
> ===============
>
> Now that does work... BUT, I am repeating some of the conditions of[/color]
the[color=blue]
> WHERE statement: (i.itemType=7) AND (i.canusa='usa')
> And I am wondering if this is the most efficient way of doing it, or[/color]
if its[color=blue]
> just some bandaid approach that works and the true logic has escaped[/color]
me?[color=blue]
> (and is the "not exists" condition going to give some extra load the[/color]
server[color=blue]
> or not)
>
> Any help is appreciated
>
> Thanks,
>
> Clint[/color]
Answered in m.p.i.asp.db. Please don't multi-post:
http://aspfaq.com/5003