2014-09-23 80 views
1

我需要一個非常專業的幫助,我似乎無法找到答案,問題是,找到與至少2本其他書籍相同書名和出版商的書籍的書名和ISBN。我們如何在一張表中檢索相同的數據?

按標題排序。

所以基本上,一切都來自書桌。

CREATE TABLE BOOK 
(
    ISBN VARCHAR2(20), 
    Title VARCHAR2(250) NOT NULL, 
    YearPublished NUMBER(4) NOT NULL, 
    PublisherName VARCHAR2(40) NOT NULL, 

    CONSTRAINT pk_isbnP PRIMARY KEY(ISBN) 
); 

這裏是我的草稿:

select _____ 
from book b2 
where ______ (select____ from book b2 
      where _____ = ______ and ______ =______) 
+3

它w如果你能提供你的餐桌結構,會有幫助嗎? – Arion 2014-09-23 13:34:25

回答

0

這應該這樣做:

select isbn, title 
from books 
where (title,publishername) in(select title,publishername 
           from books 
           group by title,publishername 
           having count(*) >=3) 
order by title; 
+1

謝謝!這解決了我的問題! – 2014-09-23 19:04:41

0
select b1.title, b1.isbn 
from book b1 
inner join 
    (select title, publishername 
    from book 
    group by title, publishername having count(*) > 2) b2 
on b1.title = b2.title and b1.publishername = b2.publishername 
order by b1.title 

內部查詢獲取的書籍,其中有三個或更多的副本標題/出版商。外部查詢使用這些結果來獲取關聯的ISBN。

0

您可以在此處使用group by語句。

SELECT title 
     ,isbn 
    FROM BOOKS 
    group by title, isbn 
    having COUNT(1) >= 2 order by title; 
+0

'[title]'是(標準)SQL中的無效標識符。 – 2014-09-23 13:54:28

+0

謝謝。我已經使用示例數據在sql server management studio中檢查了查詢。有問題使用的數據庫沒有提到。 根據Transact-SQL標題中的msdn不是關鍵字。 http://msdn.microsoft.com/en-IN/library/ms189822.aspx – Satyajit 2014-09-23 14:02:06

+0

'title'是一個有效的標識符。 '[title]'不是 – 2014-09-23 14:06:08

1

第1步:查找至少有2本書書名和出版商的組合:

SELECT title, PublisherName 
FROM BOOK 
GROUP BY title, PublisherName 
HAVING COUNT(*) > 1 

第2步:發現有這樣的標題和發佈者的所有其它書籍:

SELECT * 
FROM Books b1 
WHERE EXISTS(
    SELECT title, PublisherName 
    FROM BOOK b2 
    WHERE b1.title = b2.title AND b1.PublisherName = b2.PublisherName 
    GROUP BY title, PublisherName 
    HAVING COUNT(*) > 1 
) 
+0

我看到邏輯,但所需的輸出仍然沒有出現。 :( – 2014-09-23 13:55:33

相關問題