2009-06-04 19 views
0

MySQLでクエリに問題が発生しました。 ticket_messagesticket_message_idあるテーブルのこのクエリはどのように作成できますか?

SELECT 
    tm.ticket_message_id, 
    tm.ticket_id, 
    tm.message_from, 
    tm.message_to, 
    t.member_id, 
    t.member_to 
FROM 
    `ticket_messages` AS tm 
    INNER JOIN `tickets` AS t 
    ON (t.ticket_id = tm.ticket_id) 

主キー:私は、次のクエリを持っています。 ticketsの場合、主キーはticket_idです。

今のところ、プログラムのロジックが間違っているため、ticket_messages.message_fromの値は常に0です。これは間違っています。

は今、私はこのような状況を修正し、次の条件に応じて、tm.message_toまたはt.member_idtm.message_toを設定する必要があります。

と仮定ID_1ID_2は2つのIDです。 tm.message_fromt.member_toが両方ともID_1に等しく、t.member_idID_2に等しい場合、tm.message_fromの値にはt.member_idの値を割り当てる必要があります。

tm.message_fromt.member_idID_2に等しい場合

、及びt.member_toID_1に等しい、次いでtm.message_fromの値はt.member_toに値を割り当てる必要があります。

テーブルをMySQLクエリで修正する方法はありますか?

+0

他の編集者への注意:私はこれを清掃しようとします。 – Welbog

+0

申し訳ありません、編集が終了しました。私は情報を失わないことを願っています。私はkofto4kaの記載している条件に100%はっきりしていないので、私はそれらをどのように見つけたかを多かれ少なかれ残しました。 – Welbog

+0

ありがとうございます! Amazing :) – user52005

答えて

3

素晴らしい「CASE」ステートメントを使用してください。

UPDATE `ticket_messages` AS tm, `tickets` AS t 
SET tm.message_from = CASE 
    WHEN tm.message_from == t.member_id THEN t.member_id 
    ELSE t.member_to 
END 
WHERE (t.ticket_id = tm.ticket_id) 
+1

いいえ "UPDATE ... FROM" in mysql。 – Tomalak

+0

私は右の構文は次のだと思い: UPDATE 'ticket_messages' TM INNERはON(t.ticket_id = tm.ticket_id) SETのtm.message_from = CASE tm.message_from = t.member_id Tと' tickets'を登録しようTHEN t.member_id ELSE t.member_to END しかし、それはどの行にも影響しません。 – user52005

+0

良い点。私はそれが適切なmysql構文だと思うものに更新しました。私はSqlServerで考えることに慣れています。 – Talljoe

関連する問題