3

私は現在、ユーザー向けの休日を表示する PHP 生成のカレンダーを取得しています。この情報は、データベース、すなわちholidaysおよびに保存されますusers。ユーザーが部門を選択できるようにすると、AJAX はその部門のユーザーのみの休日をロードします。

同じ基本構造を持つ 2 つのテーブルを次に示します。

テーブルusers

+------------------------------------+
| User       | Department            |
|------------+-----------------------|
| Brian      | Sales                 |
| Tony       | Marketing             |
| Carol      | Marketing             |
| Dave       | Warehouse             |
| Chris      | Warehouse             |
+------------------------------------+

テーブルholiday

+------------------------------------+
| ID         | User                  |
|------------+-----------------------|
| 1          | Dave                  |
| 2          | Tony                  |
| 3          | Tony                  |
| 4          | Chris                 |
| 5          | Carol                 |
+------------------------------------+

私の現在のクエリ:

$getAllHols = $con->query("SELECT * FROM `holiday`");

もちろん、これはすべて休日になります。私は特定の部門のユーザーのリストを取得し、それを別のクエリで使用してそれらのユーザーの休暇を取得するのに十分な PHP の知識があります。しかし、私はこれをしたくありません。純粋な SQL ソリューションが必要であると考えています。したがって、2 つのテーブルを使用して、ユーザーが選択した部門にいる休日からすべてのレコードを取得するクエリが必要です。

いいえ:

部門「マーケティング」を選択した場合、レコード 2、3、および 5 が返されます。(トニーとキャロルはマーケティング部門です)。

上級SQLユーザーにとっては非常に簡単な問題だと思いますが、私にはそうではありません。誰でも助けることができますか?ありがとう。

4

3 に答える 3

2

これを試して。

SELECT * FROM users 
LEFT JOIN holiday ON users.user = holiday.user
WHERE holiday.department = 'marketing'
于 2013-02-12T16:36:16.530 に答える
0

これにより、Usersテーブルに一致するレコードがある場合、Holidayテーブルのレコードの個別のリストが提供されます。これにより、結果のデータの重複排除について心配する必要がなくなるため、テーブルを結合するオプションが改善されます。

select distinct h.id, h.user
  from holiday h
 where h.user in (select u.user
                    from user u
                   where u.department = 'Marketing')
 ;
于 2013-02-12T18:18:20.010 に答える
0

私が得た限り...

select user
from users inner join holiday
on users.user = holiday.user
where department = 'Marketing'
于 2013-02-12T16:37:57.380 に答える