Как написать запрос MySQL, который возвращает временный столбец, содержащий флаги для того, существует ли элемент, связанный с этой строкой, в другой таблице - PullRequest
1 голос
/ 03 февраля 2012

Как я могу написать запрос MySQL для достижения желаемого результата, показанного ниже?

У меня есть две таблицы:

TABLE_USERS:

 ID | Name  |  ... 
--------------------
 1  | Ash   |
 2  | Tim   |
 3  | Jim   |
 4  | Jay   |
 5  | Tom   |


TABLE_FLAGS:

 ID | Reason |  ...
----------------------
 2  |  ??    |
 4  |  ...   |

Я хочу знать, как написать запрос, который дает результат со следующими столбцами:

DESIRED RESULT:


 ID | Name  | Flagged
----------------------
 1  | Ash   |  false
 2  | Tim   |  true
 3  | Jim   |  false
 4  | Jay   |  true
 5  | Tom   |  false

Я мог бы сделать:

SELECT TABLE_USERS.ID, TABLE_USERS.NAME
FROM TABLE_USER

Чтобы получить первые два столбца, но я не уверен, как получить последний ...

Последний столбец не соответствует непосредственно столбцу в одной из двух таблиц; вместо этого для каждой строки он возвращает истину или ложь на основании того, существует ли запись для этого значения идентификатора строки в TABLE_FLAGS

Спасибо

Ответы [ 2 ]

6 голосов
/ 03 февраля 2012
   SELECT   tu.ID, 
            tu.NAME,
            CASE WHEN tf.ID IS NOT NULL THEN 'true' ELSE 'false' END AS Flagged
      FROM  TABLE_USER tu
            LEFT OUTER JOIN TABLE_FLAGS tf ON tu.ID = tf.ID
1 голос
/ 03 февраля 2012

Это покажет желаемый результат:

SELECT tu.ID, tu.NAME,
       CASE WHEN tf.ID IS NOT NULL THEN 'true' ELSE 'false' END AS Flagged
  FROM TABLE_USER tu
       LEFT OUTER JOIN TABLE_FLAGS tf ON tu.ID = tf.ID ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...