2

私は通常これをプログラムで行いますが、今日は学習気分になっています... SOを見回しましたが、私の問題とまったく同じものは見つかりませんでした。

2つのテーブル、、itemおよびperson関連付けを含む3番目のテーブルがありitem_personます。誰もがアイテムを持っているわけではないので、関連付けが常に存在するとは限りません。ここで、アイテムが人に関連付けられているかどうかに部分的に基づいているstatus列をテーブルに保持したいと思います。itemそれで...

Table: item
    item_id
    description
    status

Table: person
    person_id
    name

Table: item_person
    item_id
    person_id

関連付けがに存在する場合UPDATEにアイテムのステータスを設定したいとします...1item_person

  • これを処理できる単一のMySQLクエリはありますか?

  • UPDATEに関連付けが存在しない場合に実行できる単一のMySQLクエリはありますかitem_person

4

2 に答える 2

3
-- If the association exists...
update item i
join item_person ip
    on ip.item_id = i.item_id
set i.status = 1

-- If the association does not exist...
update item i
left join item_person ip
    on ip.item_id = i.item_id
set i.status = 0
where ip.item_id is null
于 2013-02-09T21:35:45.877 に答える
0
  1. UPDATEアイテムセットitem_status=1ここで、item_person.item = item.item_id
  2. UPDATEアイテムセットitem_status=1存在しない場合item_person.item=item.item_id

ここからmysqlにアクセスできず、フィドルを指定していないため、両方のクエリはテストされていないことに注意してください。ただし、デバッグについてサポートが必要な場合は、コメントを残してください。

于 2013-02-09T21:34:07.863 に答える