所以我有两个表,我试图从两个表中显示一些数据并删除重复项。对不起,我是SQL和数据库的新手。这是我的代码
表1
selectelem = document.getElementById("form:selectid");
inputelem = document.getElementById("form:inputid");
if (condition) {
selectelem.disabled = false;
inputelem.disabled = true;
} else {
inputelem.disabled = false;
selectelem.disabled = true;
}
表2
CREATE TABLE customer
(
customer_id VARCHAR2(5),
customer_name VARCHAR2(50) NOT NULL,
customer_address VARCHAR2(150) NOT NULL,
customer_phone VARCHAR2(11) NOT NULL,
PRIMARY KEY (customer_id)
);
我想显示SHOP表中的所有内容,以及来自CUSTOMER TABLE的customer_id,customer_name。
到目前为止我已经尝试过了,但它显示了两个表中的所有内容,我得到了两个重复的customer_id列:
CREATE TABLE shop
(
shop_id VARCHAR2(7),
shop_address VARCHAR2(150) NOT NULL,
customer_id VARCHAR2(7),
PRIMARY KEY (shop_id),
FOREIGN KEY (customer_id) REFERENCES customer (customer_id)
);
任何人都可以提供帮助吗?
由于
答案 0 :(得分:1)
由于这两个表都有列customer_id,因此您可以在shop table上显示所有内容,并且只显示customer表中的customer_name
SELECT s.*, c.customer_name
FROM shop s
JOIN customer c ON s.customer_id = c.customer_id
ORDER BY c.customer_name;
答案 1 :(得分:0)
select distinct c.customer_id, c.customer_name, s.*
from customer c
inner join shop s on c.customer_id = s.customer_id
distinct
关键字
https://www.w3schools.com/sql/sql_distinct.asp 答案 2 :(得分:0)
您需要手动列出所需的列。使用*
将从每个表中提取每一列。 SQL没有任何说法"选择除了这些之外的所有列..."。
我希望您只是随便使用*
- 在程序代码中使用SELECT *
是一个非常糟糕的主意,然后希望某些列按特定顺序或以某些顺序存在某个名字。
要保存输入,您可以对其中一个表使用*
并手动命名其余表:
SELECT
customer.*,
shop.shop_id,
shop.shop_address
FROM
...