3

MYSQL の学習を始めたばかりで、結合は得意ですが、サブクエリには多くの問題があります。だから私はもっと練習することに決めました。過去に注文した顧客とその ID を検索したい。アイテムの価格は $6.5 以上である必要があります。結合を使用すると、これが私が行った方法です:

SELECT 
CUSTOMER_TBL.CUST_ID
, CUST_NAME
FROM 
CUSTOMER_TBL
INNER JOIN ORDERS_TBL
ON ORDERS_TBL.CUST_ID = CUSTOMER_TBL.CUST_ID
INNER JOIN PRODUCTS_TBL 
ON ORDERS_TBL.PROD_ID = PRODUCTS_TBL.PROD_ID
WHERE PRODUCTS_TBL.COST > 6.5

これが、サブクエリを使用した方法です。

SELECT CUSTOMER_TBL.CUST_ID
, CUST_NAME
FROM CUSTOMER_TBL
WHERE 
EXISTS (
SELECT * 
FROM ORDERS_TBL
WHERE ORDERS_TBL.CUST_ID = CUSTOMER_TBL.CUST_ID
)

ご覧のとおり、注文した人だけを含めるという部分まで来ました。しかし、残りはわかりません。6.5 ドル以上の注文のみ

4

2 に答える 2

2
SELECT CUST_ID, CUST_NAME FROM CUSTOMER_TABLE
WHERE CUST_ID IN
(SELECT CUST_ID FROM ORDERS_TBL 
WHERE PROD_ID IN 
(SELECT PROD_ID FROM PRODUCTS_TBL
WHERE COST > 6.5))

これはあなたを助けるかもしれません。

于 2013-10-17T06:49:36.900 に答える
1

このようなものかもしれません:

SELECT 
  CUSTOMER_TBL.CUST_ID,
  CUST_NAME
FROM 
  CUSTOMER_TBL
WHERE EXISTS 
(
   SELECT 
     * 
   FROM 
     ORDERS_TBL
     INNER JOIN PRODUCTS_TBL 
        ON ORDERS_TBL.PROD_ID = PRODUCTS_TBL.PROD_ID
     WHERE 
        ORDERS_TBL.CUST_ID = CUSTOMER_TBL.CUST_ID
        AND PRODUCTS_TBL.COST > 6.5
)
于 2013-10-17T06:30:21.077 に答える