以下のようなテーブルがありますが、現在、、またはの値はありrating
ませlib_id
んvotes
。
図書館
id | title | year | rating | votes | lib_id |
---------------------------------------------
1 | book1 | 1999 | | | |
2 | book2 | 2010 | | | |
3 | book3 | 2009 | | | |
4 | book4 | 2007 | | | |
5 | book5 | 1987 | | | |
次に、次のような分類テーブルがあります。
分類
id | title | year | rating | votes | lib_id |
---------------------------------------------
108 | book154 | 1929 | | | |
322 | book23 | 2011 | | | |
311 | book3 | 2009 | 9.3 | 4056 | 10876 |
642 | book444 | 2001 | | | |
533 | book567 | 1981 | | | |
ライブラリテーブルのエントリが分類テーブルに表示されない場合や、その逆の場合があります。また、本のタイトルが一意でない可能性もあります。したがって、私がやりたいのは、ライブラリテーブルの各行を調べ、列title
と列を取得year
し、テーブルに移動しclassifications
てこれら2つの値を持つ行を見つけ、対応する列と列を取得rating
しvotes
てlib_id
、ライブラリテーブルのエントリを更新することです。
PDOも使いたいです。以下は、私が達成しようとしていることの機能しない例です。
$update_vals_STH =
$DBH->prepare(
"UPDATE library SET lib_id=?, rating=?, votes=?
FROM (SELECT lib_id, rating, votes)
FROM classifications WHERE title=? AND year=?";
どんな助けでもいただければ幸いです。私はMySQLにまったく慣れておらず、しばらくの間これに苦労しています。