you could do this, but i would have concerns over the indexing strategy. 

select name
from person, 
(select distinct sid, count(*) bid_count
  from bids
  group by sid
  HAVING count(*) = (SELECT COUNT(BOAT_ID FROM BOATS)) bids
where person.sid = bids.sid;



Now yours bids table is an intersect table and would have the most records of all 
three tables. I would create an extra field that never gets update and just put a 
default value in it. Then I would put a bitmap index on it. since they aer VERY faster 
on counts. 

my problem is with the group by. SID could be huge. That could lead to a massive slow 
down and alot of LIOs.... dont think there is a faster a solution though. No 
correlated sub-queries which are LIO intensive. 
> 
> From: "Mercadante, Thomas F" <[EMAIL PROTECTED]>
> Date: 2003/09/29 Mon AM 09:34:38 EDT
> To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
> Subject: RE: interesting sql question
> 
> Ralph,
> 
> Assuming that there is no history in the BIDS table (meaning that there are
> no "old" records indicating a bid recorded last year), I think the following
> would work just fine.
> 
> 
> select name
> from person, 
> (select distinct sid, count(*) bid_count
>   from bids
>   group by sid) bids
> where person.sid = bids.sid
> and bid_count = 3
> 
> 
> Tom Mercadante
> Oracle Certified Professional
> 
> 
> -----Original Message-----
> Sent: Monday, September 29, 2003 9:20 AM
> To: Multiple recipients of list ORACLE-L
> 
> 
> Im taking a database theory class(no I dont need help with my homework).
> There is an interesting query in the book that I have never seen posed
> before. The solution would be hideously slow if there was even a moderate
> amount of data in the tables. How would you write it? 
> 
> Given 3 tables: and columns in the tables:
> 
> TABLE: Person
> Primary Key: SID
> COLUMN: NAME
> 
> TABLE: BIDS
> Primary Key: BID
> Foreign Key: SID
> FOREIGN KEYT: BOAT_ID
> Column: Date
> 
> Boat:
> Primary Key: BOAT_ID
> Column: Color
> 
> Find any person who has reserved all the boats. The 
> 
> I dont have the solution with me, but there is a 'NOT EXISTS', then in the
> subquery there is a minus and a correlated 'where' clause.'. That query
> wouldnt move.
> 
> How would you solve this? 
> 
> Also, according to the 'SQL Standard', SQL is supposed to support op codes
> such as 'ALL' or 'ANY' So you can say:
> 
> Find all people who are older than any person with blue eyes. Or find all
> the people who are older than 'ALL' the people with blue eyes.
> 
> Just to reiterate. Not looking for help with my homework. My professor isnt
> an Oracle guy so he doesnt know.  
> 
> -- 
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> -- 
> Author: <[EMAIL PROTECTED]
>   INET: [EMAIL PROTECTED]
> 
> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> San Diego, California        -- Mailing list and web hosting services
> ---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from).  You may
> also send the HELP command for other information (like subscribing).
> -- 
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> -- 
> Author: Mercadante, Thomas F
>   INET: [EMAIL PROTECTED]
> 
> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> San Diego, California        -- Mailing list and web hosting services
> ---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from).  You may
> also send the HELP command for other information (like subscribing).
> 

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: <[EMAIL PROTECTED]
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to