SQL连接多个表查询

时间:2016-01-23 01:10:30

标签: mysql database join

嗨,我有以下这两个问题和我的尝试。请给我一些建议。

SQL数据库

CUSTOMER表:CUST_IDCUST_NAME,...

PRODUCT表:PROD_IDPROD_DESCRIPTION,...

CUSTOMER_PRODUCTS表:CUST_IDPROD_ID

此数据库用于跟踪客户拥有的产品,因此CUSTOMER_PRODUCTS为客户拥有的每种产品都有一个条目。

我想:

编写一个SQL查询,该查询将返回所有不拥有任何产品的客户的列表

这是我的尝试:

SELECT CUSTOMER _PRODUCTS.CUST_ID, CUSTOMER.CUST_ID, CUSTOMER.CUST_NAME
FROM CUSTOMER
INNER JOIN CUSTOMER_PRODUCTS
ON CUSTOMER_PRODUCTS.CUST_ID != CUSTOMER.CUST_ID;

B:

编写一个SQL查询,该查询将返回所有拥有名称为“SAW”的产品的客户的列表

这是我的尝试:

SELECT CUSTOMER _PRODUCTS.CUST_ID, CUSTOMER.CUST_ID, CUSTOMER.CUST_NAME
FROM CUSTOMER
INNER JOIN CUSTOMER_PRODUCTS
ON CUSTOMER_PRODUCTS.CUST_ID = CUSTOMER.CUST_ID and WHERE PROD_DESCRIPTION LIKE 'SAW';

你们觉得怎么样?我朝着正确的方向前进了吗?

2 个答案:

答案 0 :(得分:0)

对于 A ,您可能希望使用LEFT JOINIS NULL

SELECT     CUSTOMER.CUST_NAME
FROM       CUSTOMER
LEFT JOIN  CUSTOMER_PRODUCTS ON CUSTOMER.CUST_ID = CUSTOMER_PRODUCTS.CUST_ID
WHERE      CUSTOMER_PRODUCTS.CUST_ID IS NULL;

对于 B ,请问单独的问题,因为它是分开的。

答案 1 :(得分:0)

对于B

SELECT CUSTOMER _PRODUCTS.CUST_ID, CUSTOMER.CUST_ID, CUSTOMER.CUST_NAME
FROM CUSTOMER
   INNER JOIN CUSTOMER_PRODUCTS ON CUSTOMER_PRODUCTS.CUST_ID = CUSTOMER.CUST_ID 
and WHERE PROD_DESCRIPTION LIKE '%SAW%';

其他人打我到A部分