0

タイトルの付け方がよくわからないので、よろしくお願いします。

とにかく、リクエストの特定のステータスを検索するために、次のSQL SELECTクエリ(Oracle)があります。

SELECT ib.incident_id,
       ib.incident_status_id
  FROM cs_incidents_all_b ib, cs_incidents_all_tl it
  WHERE ib.incident_id = it.incident_id
   AND ib.incident_status_id IN (
    SELECT st.incident_status_id
      FROM cs_incident_statuses_tl st
      WHERE st.NAME IN
             ('Accept Order',
              'Order Accepted',
              'Address Retrieved',
              'Analyze',
              'Entered',
              'Information Retrieved',
              'Retrieve Address',
              'Retrieve Information',
              'Returned'));

現在、このクエリを実行すると、最後の列 ( incident_status_id ) に次の出力が表示されます: 103

この番号はcs_incident_statuses_tlテーブルのキーであり、そのテーブルには、クリアテキスト文字列 (この場合は「分析」) を持つ名前が付いた列があります。

上記の SELECT クエリを変更して、実行時に 103 ではなく 'Analyze' が返されるようにするにはどうすればよいですか? さまざまな JOIN を試してみましたが、代わりに平文の説明を表示する良い方法が見つかりませんでした。

どんな助けでも大歓迎です、事前に感謝します! 質問がばかげている場合は申し訳ありませんが、SQL は私の得意分野とはかけ離れています。:)

4

2 に答える 2

1

A bit clumsy,but try

SELECT ib.incident_id,
       ib.incident_status_id,
       (    SELECT st.NAME
            FROM cs_incident_statuses_tl st
            WHERE st.incident_status_id = ib.incident_status_id
       ) StatusName
  FROM cs_incidents_all_b ib, cs_incidents_all_tl it
  WHERE ib.incident_id = it.incident_id
   AND ib.incident_status_id IN (
    SELECT st.incident_status_id
      FROM cs_incident_statuses_tl st
      WHERE st.NAME IN
             ('Accept Order',
              'Order Accepted',
              'Address Retrieved',
              'Analyze',
              'Entered',
              'Information Retrieved',
              'Retrieve Address',
              'Retrieve Information',
              'Returned'));
于 2013-07-09T14:03:36.530 に答える