2016-04-19 47 views
-3

我試圖在SQL運行這個加號,但它給我這個錯誤列定義的含糊SQL加

SELECT reviewer_address, reviewer_name, review_date 
FROM reviewers, reviews 
INNER JOIN reviews ON reviewers.reviewer_address = reviews.review_date 
INNER JOIN reviewers ON reviews.review_date = reviewers_address; 

ERROR at line 1: 
ORA-00918: column ambiguously defined 

有誰知道我做錯了嗎?

這些評語表和評審

CREATE TABLE reviewers (
    reviewer_id   NUMBER (6), 
    reviewer_name  VARCHAR2 (30), 
    review_name   VARCHAR2 (15), 
    reviewer_address REF address_type SCOPE IS addresses 
); 

CREATE TABLE reviews (
    review_id   NUMBER (6), 
    review_name   VARCHAR2 (30), 
    review_date   DATE, 
    reviewer_id   NUMBER (6) NOT NULL, 
    venue_id   NUMBER (6) NOT NULL 
); 

而這些插件爲他們兩個表

--reviews 
INSERT INTO reviews (review_id, review_name, review_date, reviewer_id, venue_id) 
VALUES (1, 'MIKE POWELL', '03-DEC-2015', 1, 1); 

INSERT INTO reviews (review_id, review_name, review_date, reviewer_id, venue_id) 
VALUES (2, 'JOHN MAYER', '15-MAY-2004', 2, 2); 

INSERT INTO reviews (review_id, review_name, review_date, reviewer_id, venue_id) 
VALUES (3, 'SETH CONNOR', '25-JAN-2011', 3, 3); 

INSERT INTO reviews (review_id, review_name, review_date, reviewer_id, venue_id) 
VALUES (4, 'JULIA SMITH', '08-AUG-2013', 4, 4); 

INSERT INTO reviews (review_id, review_name, review_date, reviewer_id, venue_id) 
VALUES (5, 'MADONNA MARLEY', '30-NOV-2001', 5, 5); 


--reviewers 
INSERT INTO reviewers (reviewer_id, reviewer_name, review_name, reviewer_address) 
SELECT 1, 'MIKE POWELL', 'TEST REVIEW', REF(a) 
FROM addresses a 
WHERE street = '13 JAMES ROAD'; 

INSERT INTO reviewers (reviewer_id, reviewer_name, review_name, reviewer_address) 
SELECT 2, 'JOHN MAYER', 'MAIN REVIEW', REF(a) 
FROM addresses a 
WHERE street = '54 BRIDGE STREET'; 

INSERT INTO reviewers (reviewer_id, reviewer_name, review_name, reviewer_address) 
SELECT 3, 'SETH CONNOR', 'CAR REVIEW', REF(a) 
FROM addresses a 
WHERE street = '10 LIME STREET'; 

INSERT INTO reviewers (reviewer_id, reviewer_name, review_name, reviewer_address) 
SELECT 4, 'JULIA SMITH', 'BEAUTY REVIEW', REF(a) 
FROM addresses a 
WHERE street = '1 PALL MALL STREET'; 

INSERT INTO reviewers (reviewer_id, reviewer_name, review_name, reviewer_address) 
SELECT 5, 'MADONNA MARLEY', 'CLOTHES REVIEW', REF(a) 
FROM addresses a 
WHERE street = '28 MAIN ROAD'; 

我希望這使得它更容易爲你們

+1

你知道你從每個表中選擇兩次? – jarlh

+0

切勿將舊的隱式連接語法與現代的顯式'JOIN'語法混合使用! – jarlh

+0

你真的在比較一個表中的地址和另一個表中的日期嗎?或者是一個錯誤(可能來自編輯)? – mathguy

回答

1

切勿混用舊的隱式連接語法,使用現代的,明確的JOIN語法。 並且不要複製選擇列表中的表格。

SELECT reviewer_address, reviewer_name, review_date 
FROM reviewers 
INNER JOIN reviews ON reviewers.reviewer_id = reviews.reviewer_id 
+0

ERROR位於第3行: ORA-00932:不一致的數據類型:預期數量得到DATE 我已經改變了一些位上,它只是嘗試,這將更好地工作和新的代碼是這樣 –

+0

SELECT rs.reviewer_address,rs.reviewer_name ,r.review_id 來自評論者rs INNER JOIN評論r ON rs.reviewer_address = r.review_id; –

+0

但現在錯誤在第4行這個錯誤: ORA-00932:不一致的數據類型:預計的REF有NUMBER –

0

請使用兩種:

SELECT reviewer_address, reviewer_name, review_date 
FROM reviewers, reviews 
where reviewers.reviewer_address = reviews.review_date 

或本

SELECT reviewer_address, reviewer_name, review_date 
FROM reviewers 
INNER JOIN reviews ON reviewers.reviewer_address = reviews.review_date 
+0

如果使用它並在sql上運行該文件並指出此錯誤 錯誤在第1行: ORA-00932:數據類型不一致:期望NUMBER得到DATE –