我有3個表格,如下所示。簡單的sql查詢
salesman(sid,sname)
location(lid,lname)
sales_loc(sid,lid)
現在我想打印的SID和誰曾經訪問過的所有位置推銷員的SNAME。 我想要一個SQL查詢,我不想要一個PL/SQL代碼。
我有3個表格,如下所示。簡單的sql查詢
salesman(sid,sname)
location(lid,lname)
sales_loc(sid,lid)
現在我想打印的SID和誰曾經訪問過的所有位置推銷員的SNAME。 我想要一個SQL查詢,我不想要一個PL/SQL代碼。
select sid, sname from salesman
where not exists
(select 1 from location
where not exists
(select 1 from sales_loc
where sid=saleman.sid
and lid = location.lid));
的另一種方法:
select sid, sname from salesman
where
(select count(*) from location) =
(select count(*) from sales_loc where sales_loc.sid = salesman.sid)
編輯: 萬一sales_loc(sid,lid)
對不是一個鍵時,下面的查詢是比較合適的,
如ammoQ建議:
select sid, sname from salesman
where
(select count(*) from location) =
(select count(distinct lid) from sales_loc where sales_loc.sid = salesman.sid)
獲取所有銷售員recs訪問的地點數等於loca的數量蒸發散。
select sm.* from salesman as sm
where (select count(sl.*) from sales_loc as sl where sl.sid = sm.sid)
= (select count(l.*) from location as l);
還有一個鍋!
鑑於這些推銷員和他們的領土......
SQL> select s.sname, l.lname
2 from salesman s
3 , location l
4 , sales_loc sl
5 where sl.sid = s.sid
6 and sl.lid = l.lid
7 order by s.sid, l.lid
8/
SNAME LNAME
---------- ----------
FOX TRAIN
FOX BOAT
KNOX BOAT
KNOX HOUSE
SAM TRAIN
SAM BOAT
SAM HOUSE
7 rows selected.
SQL>
...此查詢提取誰訪問了所有的人的一個...
SQL> select s.sname
2 from salesman s
3 where s.sid not in (
4 select sid from (
5 select cjs.sid, cjl.lid
6 from salesman cjs
7 cross join location cjl
8 minus
9 select sl.sid, sl.lid
10 from sales_loc sl
11 )
12 )
13/
SNAME
------ ----
SAM
SQL>
這應該工作。我試過了。
select a.sid, a.salesman, count(a.sid) as total from salesman a
inner join sales_loc b on b.sid = a.sid
inner join location c on c.lid = b.lid
group by a.sid, a.salesman
having count(a.sid) = (select count(*) from location)
它使用要比較的位置總數。
推銷員(SID,SNAME) 位置(蓋,L-NAME) sales_loc(SID,蓋子)
選擇s.sid,從推銷員小號s.sname,位置升,sales_loc SL 其中s.sid = sl.sid and l.lid = sl.lid
我正要猜測作業。但是,家庭作業很少涉及像Oracle這樣的軟件...... – Joey 2009-11-27 08:23:00
好吧,現在有一個Express版本;) – MartW 2009-11-27 08:24:44
也許某些東西在我頭腦上傳開了「whoosh」,但我很難理解你在問什麼。這兩個表如何鏈接? – Greg 2009-11-27 08:24:46