-3
CREATE TABLE    CUSTOMER (
CUSID   VARCHAR(25) NOT NULL,
CNAME   VARCHAR(50),
CONSTRAINT CUSTOMER_PKEY PRIMARY KEY (CUSID),
);

CREATE TABLE    SHOP (
SHOPID  VARCHAR(10) NOT NULL,
ADDRESS VARCHAR(25),
CONSTRAINT SHOP_PKEY PRIMARY KEY (SHOPID),
);

CREATE TABLE    VISIT (
CUSID   VARCHAR(25) NOT NULL,
SHOPID  VARCHAR(10) NOT NULL,
VDATE   DATE        NOT NULL,
CONSTRAINT VISIT_PKEY PRIMARY KEY (CUSID, SHOPID, VDATE),
CONSTRAINT VISIT_FKEY1 FOREIGN KEY (CUSID) REFERENCES CUSTOMER(CUSID),
CONSTRAINT VISIT_FKEY2 FOREIGN KEY (SHOPID) REFERENCES SHOP(SHOPID)
);

「ジョン」という名前の顧客が少なくとも 2 回訪れた店の住所を見つける方法は??

SHOP NATURAL JOIN VISIT からアドレスを選択 WHERE CUSID IN (SELECT CUSID FROM CUSTOMER WHERE CNAME = 'john' GROUP HAVING COUNT(CUSID) > 2);

私は多くの種類の結合を試しましたが、カウントと等しい条件をまとめた後、結果が0行になるようです。

4

1 に答える 1

1
    SELECT DISTINCT s.address
    FROM shop s 
    JOIN visit v ON s.shopid = v.shopid 
    JOIN customer c ON v.customerid = c.customerid 
    WHERE c.cname = 'John' 
    GROUP BY 
    s.address
    , c.customerid 
    HAVING COUNT(*) > 1
于 2013-05-06T12:36:05.933 に答える