1

クライアントとフェスティバルのテーブルがあります。すべてのお祭りは毎年開催されます (正月など)。しかし、すべてのクライアントがどのフェスティバルにも招待されるわけではありません。

この時点でフェスティバル 1 に招待されたが、フェスティバル 2 には招待されなかった女性クライアントを取得する必要があります。

Table "clients"
+-----+--------------+-----------+---------+-----+
| id  | name         | email     | adress  | sex |
+-----+--------------+-----------+---------+-----+
| 1   | Ivan         | iva@ya.su | NY city | m   |
| 2   | Michael      | lad@ya.su | LA      | m   |
| 3   | Anna         | al@ya.su  | LA      | w   |
| ...
+-----+--------------+-----------+---------+-----+

Table festivals
+-----+------------+-------+
| id  | name       | date  |
+-----+------------+-------+
| 1   | festival1  | 8-03  |
| 2   | festival2  | 23-02 |
| 3   | festival3  | 1-01  |
| ...
+-----+------------+-------+

Talbe "invitations"
+--------+----------+------+
| client | festival | year |
+--------+----------+------+
| 1      | 2        | 2013 |
| 3      | 1        | 2009 |
| ...
+--------+----------+

私はこのクエリのようなことを始めましたが、修正する必要があります:

SELECT name
    FROM clients, festivals, invitations
    WHERE clients.sex = w
        AND festivals.name = festival1
        AND clients.id = invitations.client
        AND invitations.year = 2013
4

4 に答える 4

1

私はこのようなことをします:

SELECT c.Name
   FROM clients c
    INNER JOIN invitations i 
        ON i.client = c.id 
        AND i.year = 2013
    INNER JOIN festivals f 
        ON i.festival = f.id
        AND f.name = 'festival1'
WHERE 
    c.sex = 'w'
于 2013-06-14T13:35:16.703 に答える
0

最初に、クライアント/招待状、次に招待状/フェスティバルを通じて、クライアントとフェスティバルに参加する必要があります。

次に、festival2 に招待されたクライアントを破棄する必要があります

SELECT name
    FROM clients, festivals, invitations
    WHERE clients.sex = w
        AND festivals.name = festival1
        AND festivals.name != festival2
        AND clients.id = invitations.client
        AND festivals.id = invitations.festival
        AND invitations.year = 2013
于 2013-06-14T13:36:29.727 に答える