简体   繁体   English

3个表,JOIN查询和字母顺序

[英]3 Tables, JOIN query and alphabetic order

I am currently working with three tables where I am trying to figure out how to use a join to display once the title_id of any book with Dennis McCann as an editor. 我目前正在使用三个表,试图找出如何使用title_id显示丹尼斯·麦肯恩(Dennis McCann)作为编辑者的任何书籍的title_id The tables have in common title_id and editor_id . 这些表具有共同的title_ideditor_id Cant find a way to piece it all together. 不能找到一种将所有内容组合在一起的方法。 How to display once the title_id of any book with Dennis McCann as an editor? 丹尼斯·麦肯(Dennis McCann)作为编辑者,如何显示任何一本书的title_id

SELECT * FROM title_editors; SELECT * FROM title_editors;

 EDITOR_ID   TITLE_ EDITOR_ORDER
    ----------- ------ ------------
    826-11-9034 Bu2075            2
    826-11-9034 PS2091            2
    826-11-9034 Ps2106            2
    826-11-9034 PS3333            2
    826-11-9034 PS7777            2
    826-11-9034 pS1372            2
    885-23-9140 MC2222            2
    885-23-9140 MC3021            2
    885-23-9140 Tc3281            2
    885-23-9140 TC4203            2
    885-23-9140 TC7777            2
    321-55-8906 bU1032            2
    321-55-8906 BU1111            2
    321-55-8906 BU7832            2
    321-55-8906 PC1035            2
    321-55-8906 PC8888            2
    321-55-8906 BU2075            3
    777-02-9831 pc1035            3
    777-02-9831 PC8888            3
    943-88-7920 BU1032            1
    943-88-7920 bu1111            1
    943-88-7920 BU2075            1
    943-88-7920 BU7832            1
    943-88-7920 PC1035            1
    943-88-7920 pc8888            1
    993-86-0420 PS1372            1
    993-86-0420 PS2091            1
    993-86-0420 PS2106            1
    993-86-0420 PS3333            1
    993-86-0420 pS7777            1
    993-86-0420 MC2222            1
    993-86-0420 MC3021            1
    993-86-0420 Tc3218            1
    993-86-0420 TC4203            1
    993-86-0420 TC7777            1

35 rows selected.

SQL> SELECT * FROM title_authors; SQL> SELECT * FROM title_authors;

AUTHOR_ID   TITLE_ AUTHOR_ORDER ROYALTY_SHARE
----------- ------ ------------ -------------
409-56-7008 Bu1032            1            .6
486-29-1786 PS7777            1             1
486-29-1786 pC9999            1             1
712-45-1867 MC2222            1             1
172-32-1176 Ps3333            1             1
213-46-8915 BU1032            2            .4
238-95-7766 PC1035            1             1
213-46-8915 Bu2075            1             1
998-72-3567 pS2091            1            .5
899-46-2035 PS2091            2            .5
998-72-3567 PS2106            1             1
722-51-5454 mc3021            1           .75
899-46-2035 MC3021            2           .25
807-91-6654 tC3218            1             1
274-80-9391 BU7832            1             1
427-17-2319 pC8888            1            .5
846-92-7186 PC8888            2            .5
756-30-7391 PS1372            1           .75
724-80-9391 PS1372            2           .25
724-80-9391 bu1111            1            .6
267-41-2394 bU1111            2            .4
672-71-3249 TC7777            1            .4
267-41-2394 TC7777            2            .3
472-27-2349 Tc7777            3            .3
648-92-1872 TC4203            1             1

25 rows selected.

SQL> SELECT * FROM editors; SQL> SELECT * FROM编辑器;

EDITOR_ID   EDITOR_LNAME      EDITOR_FNAME  EDITOR_POSITION PHONE        ADDRESS              CITY      ST ZIP
----------- ----------------- ------------- --------------- ------------ -------------------- ------------ -- ------
321-55-8906 DeLongue          Martinella    Project         415 843-2222 3000 6th St.         BERKELEY     Ca 94710
723-48-9010 Sparks            MANfred       cOPY            303 721-3388 15 Sail              DENVER    Co 80237
777-02-9831 Samuelson         Bernard       proJect         415 843-6990 27 Yosemite          OAKLAND      Ca 94609
777-66-9902 Almond            Alfred        copy            312 699-4177 1010 E. DeVON        CHICAGO      Il 60018
826-11-9034 Himmel            Eleanore      pRoject         617 423-0552 97 Bleaker           BOSTON    Ma 02210
885-23-9140 Rutherford-Hayes  Hannah        PROJECT         301 468-3909 32 Rockbill Pike     ROCKBILL     MD 20852
993-86-0420 McCann            Dennis        acQuisition     301 468-3909 32 Rockbill Pike     ROCKBill     MD 20852
943-88-7920 Kaspchek          Christof      acquisitiOn     415 549-3909 18 Severe Rd.        BERKELEY     CA 94710
234-88-9720 Hunter            Amanda        acquisition     617 432-5586 18 Dowdy Ln.         BOSTON    MA 02210

You can try join on the table Editors and Ttile_Editors using the Editor_ID that will give you the matching records and you can filter out Only for the ' Dennis McCann ' using either multiple conditions in join or the where clause as, 您可以尝试join在桌子上EditorsTtile_Editors使用Editor_ID会给你匹配的记录,并可以过滤掉只为参加“丹尼斯·麦肯”无论是使用多个条件或where的条款,

WITHOUT WHERE 没有任何地方

 SELECT DISTINCT te.title_id,ed.EDITOR_ID,ed.EDITOR_LNAME,ed.EDITOR_FNAME
 FROM
    title_editors te JOIN editors ed
     ON te.EDITOR_ID = ed.EDITOR_ID 
        AND ed.EDITOR_LNAME = 'McCann'
        AND ed.EDITOR_FNAME = 'Dennis'
 ORDER BY te.title_id

USing WHERE 在哪里使用

  SELECT DISTINCT te.title_id,ed.EDITOR_ID,ed.EDITOR_LNAME,ed.EDITOR_FNAME
 FROM
    title_editors te JOIN editors ed
     ON te.EDITOR_ID = ed.EDITOR_ID 
 WHERE 
      ed.EDITOR_LNAME = 'McCann'
      AND ed.EDITOR_FNAME = 'Dennis'
 ORDER BY te.title_id

It would be easier with the in operator: 使用in运算符会更容易:

SELECT   DISTINCT title_id
FROM     title_editors
WHERE    editor_id IN (SELECT editor_id
                       FROM   editors
                       WHERE  editor_fname = 'Dennis' AND
                              editor_lname = 'McCann')
ORDER BY title_id ASC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM