Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: RE: interesting sql question

Re: RE: interesting sql question

From: <rgaffuri_at_cox.net>
Date: Mon, 29 Sep 2003 08:09:40 -0800
Message-ID: <F001.005D1602.20030929080940@fatcity.com>


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" <NDATFM_at_labor.state.ny.us>
> Date: 2003/09/29 Mon AM 09:34:38 EDT
> To: Multiple recipients of list ORACLE-L <ORACLE-L_at_fatcity.com>
> 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: <rgaffuri_at_cox.net
> INET: rgaffuri_at_cox.net
>
> 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: ListGuru_at_fatcity.com (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: NDATFM_at_labor.state.ny.us
>
> 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: ListGuru_at_fatcity.com (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: <rgaffuri_at_cox.net
  INET: rgaffuri_at_cox.net

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: ListGuru_at_fatcity.com (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).
Received on Mon Sep 29 2003 - 11:09:40 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US