簡體   English   中英

MySQL - 選擇包含值的列並創建“虛擬列”

[英]MySQL - select column with values and create 'virtual column'

我有3張桌子。

tb_employees:

+---------------+---------------+
|  id_employee  |   employee    |
+---------------+---------------+
|     1         | Robert Tomson |
|     2         | Jhonatan Weg  |
|     3         |   Eva Uhte    |
+---------------+---------------+

tb_requirements:

+---------------+-----------------+
|  id_requirem  |    requirem     |
+---------------+-----------------+
|     11        |      Photo      |
|     12        | Criminal Record |
|     13        |  Shooting Test  |
+---------------+-----------------+

tb_details:

+---------------+-----------------+---------------+
|  id_details   |  id_employee    |  id_requirem  |
+---------------+-----------------+---------------+
|     21        |       1         |       11      |
|     22        |       1         |       12      |
|     23        |       1         |       13      |
|     24        |       2         |       12      |
|     25        |       2         |       13      |
|     26        |       3         |       11      |
|     27        |       3         |       13      |
+---------------+-----------------+---------------+

我要做的是SELECT of requirem (描述)和一個特定的員工(例如,對於WHERE id_employee = '2' ),並添加一個“虛擬列”,顯示員工是否有該要求。

像這樣: WHERE id_employee = '2'

+----------------+-----------------+
|    requirem    | virtual_column  |
+----------------+-----------------+
|     Photo      |       0         |
|Criminal Record |       1         |
| Shooting Test  |       1         |
+---------------+------------------+

WHERE id_employee = '3'

+----------------+-----------------+
|    requirem    | virtual_column  |
+----------------+-----------------+
|     Photo      |       1         |
|Criminal Record |       0         |
| Shooting Test  |       1         |
+---------------+------------------+

其中0 =員工沒有該要求,1 =員工具有該要求:來自tb_detail。

我真的不知道如何做到這一點。

你可以幫我嗎?

謝謝你的回答。

實現目標的關鍵是外部OUTER JOIN

SELECT r.requirem, (d.id_requirem IS NOT NULL) virtual_column
  FROM tb_requirements r LEFT JOIN tb_details d
    ON r.id_requirem = d.id_requirem
   AND d.id_employee = 2

id_employee = 2輸出:

|        REQUIREM | VIRTUAL_COLUMN |
|-----------------|----------------|
|           Photo |              0 |
| Criminal Record |              1 |
|   Shooting Test |              1 |

id_employee = 3輸出:

|        REQUIREM | VIRTUAL_COLUMN |
|-----------------|----------------|
|           Photo |              1 |
| Criminal Record |              0 |
|   Shooting Test |              1 |

這是SQLFiddle演示

進一步閱讀:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM