2

このクエリ(選択した3つのテーブルに挿入)を使用して、mysqlテーブルに行を挿入します。

"INSERT INTO test (catid_1, descat_1, catid_2, descat_2, id_user, user)
 SELECT '$_POST[cat_1]',t1.desc AS descat_1, '$_POST[cat_2]', t2.desc AS descat_2, 
 $_POST[id_user]',t3.user FROM t1, t2, t3 
 WHERE t1.idcat_1='$_POST[cat_1]' and t2.idcat_2='$_POST[cat_2]' 
 and t3.id_user='$_POST[id_user]'";

ここで、同じロジックを使用して、mysqlテーブルの行を更新(select 3テーブルに更新)したいと思います。

テーブル構造

t1
`idcat_1` int(11) NOT NULL AUTO_INCREMENT,
`desc` varchar(100) NOT NULL,
PRIMARY KEY (`idcat_1`)

t2
`idcat_2` int(11) NOT NULL AUTO_INCREMENT,
`idcat_1` int(11) NOT NULL,
`desc` varchar(100) NOT NULL,
PRIMARY KEY (`idcat_2`)

t3
`id_user` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(40) NOT NULL,
PRIMARY KEY (`id_user`)

できますか?

ありがとう

4

1 に答える 1

4

このような:

UPDATE test AS t
INNER JOIN t1 ON -- join conditon
INNER JOIN t2 ON ...
INNER JOIN t3 ON ... 
SET t.catid_1 = '$_POST[cat_1]',
    t.descat_1 = t1.desc,
    ....
 WHERE t1.idcat_1='$_POST[cat_1]' 
   and t2.idcat_2='$_POST[cat_2]' 
   and t3.id_user='$_POST[id_user]'

4 つのテーブルがどのように結合されているかは明確ではありません。それぞれの結合条件を指定する必要がありますJOIN


更新 1

更新された質問に投稿したばかりのテーブルの構造から、3 つのテーブルのいずれでもなく、キーによってテーブルに関連していないようにtestt1見えt2ますt3。このキーでは、このテーブルと結合する必要はなく、テーブルとt3のみを結合する必要がありました。仮定して:testt1t2

  • testと関連しt1ていtest.catid_1 = t1.idcat_1ます。
  • t1と関連しt2ていt1.idcat_1 = t2.idcat_1ます。

このような:

UPDATE test AS t
INNER JOIN t1 ON t.catid_1 = t1.idcat_1
INNER JOIN t2 ON t1.idcat_1 = t2.idcat_1
SET t.catid_1 = '$_POST[cat_1]',
    t.descat_1 = t1.desc,
    ....
 WHERE t1.idcat_1='$_POST[cat_1]' 
   and t2.idcat_2='$_POST[cat_2]' 
于 2013-02-19T10:55:02.477 に答える