Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义不明确的sql plus列_Sql_Oracle - Fatal编程技术网

定义不明确的sql plus列

定义不明确的sql plus列,sql,oracle,Sql,Oracle,我正试图在sql plus中运行此命令,但它给了我这个错误 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

我正试图在sql plus中运行此命令,但它给了我这个错误

 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';

我希望这能让你们更容易

不要把旧的隐式连接语法和现代的显式连接语法混为一谈。 并且不要复制选择列表中的表

SELECT reviewer_address, reviewer_name, review_date
FROM reviewers
INNER JOIN reviews ON reviewers.reviewer_id = reviews.reviewer_id
请使用:

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

您知道您从每个表中选择了两次吗?不要将旧的隐式连接语法与现代的显式连接语法混用!您是否真的将一个表中的地址与另一个表中的日期进行比较?或者这是一个错误(可能来自编辑)?如果使用该选项并在sql plus上运行该文件,它会在第1行说明此错误:ORA-00932:不一致的数据类型:预期的数字获取日期错误在第3行:ORA-00932:不一致的数据类型:预期的数字获取日期我已经更改了它的一些位,只是为了尝试更好地工作,新代码是thissect rs.reviewer\u address,rs.reviewer\u name,r.review\u id来自审阅者的内部加入审阅r ON rs.reviewer\u address=r.review\u id;但是现在的错误是第4行的错误:ORA-00932:不一致的数据类型:预期的REF GET NUMBER输入您的问题,添加表定义和一些示例表数据。所以我们不必猜测如何加入!完成!我希望这有帮助