2

history_tickets と users の 2 つのテーブルがあります。

表 1 : history_ticket

history_id   |  id_klien    | id_staf   | message
  11         |     77       |   NULL    |  text
  12         |    NULL      |    1      |  text
  13         |     77       |   NULL    |  text

表 2: ユーザー

user_id   |  name    | group   
  1       |   john   |  staff  
  77      |   dion   |  member

私はこのような結果が欲しい:

history_id   |  message | user_id  |  name   | group
  11         |    text  |   77     |  dion   |  member
  12         |    text  |    1     |  john   |  staf
  13         |    text  |   77     |  dion   |  member
4

2 に答える 2

2

JOINテーブルが必要です:

select h.history_id,
  h.message,
  u.user_id,
  u.name,
  u.group
from history_ticket h
left join users u
  on h.id_staf = u.user_id
  or h.id_klien = u.user_id

デモで SQL Fiddle を参照してください

于 2013-02-22T15:36:39.600 に答える
2
SELECT  a.HISTORY_ID,
        a.MESSAGE,
        COALESCE(a.ID_KLIEN, a.ID_STAF) UserID,
        COALESCE(b.name, c.name) name,
        COALESCE(b.group, c.group) `group`
FROM    history_ticket a
        LEFT JOIN users b
            ON a.id_klien = b.user_ID
        LEFT JOIN users c
            ON a.id_staf = c.user_ID
于 2013-02-22T15:37:03.563 に答える