Php 使用内部联接将数字从一个表添加到另一个表-帮助!
我在网上冲浪,发现了一些类似于我想要的东西,但它没有执行…请帮助 我的表具有以下结构:Php 使用内部联接将数字从一个表添加到另一个表-帮助!,php,sql,join,inner-join,sql-update,Php,Sql,Join,Inner Join,Sql Update,我在网上冲浪,发现了一些类似于我想要的东西,但它没有执行…请帮助 我的表具有以下结构: TABLE team id integer autoincrement primary key, name varchar, pointsfavor integer, pointscontra integer TABLE game id integer autoincrement primary key, team1_id integer, team2_id integer,
TABLE team
id integer autoincrement primary key,
name varchar,
pointsfavor integer,
pointscontra integer
TABLE game
id integer autoincrement primary key,
team1_id integer,
team2_id integer,
score1 integer, /*score for team1*/
score2 integer /*score for team2*/
到目前为止,我有以下更新声明:
UPDATE team
INNER JOIN game g1 ON (team.id = g1.team1_id)
INNER JOIN game g2 ON (team.id = g2.team2_id)
SET pointsfavor = pointsfavor
+ IF(g1.score1 > g1.score2, g1.score1 - g1.score2, 0)
+ IF(g2.score2 > g2.score1, g2.score2 - g2.score1, 0)
, pointscontra = pointscontra
+ IF(g1.score1 < g1.score2, g1.score2 - g1.score1, 0)
+ IF(g2.score2 < g2.score1, g2.score1 - g2.score2, 0)
WHERE g1.id = 1;
当我把它放在我的sql中时,它会执行这个函数,但它不会改变团队中的“pointsfavor”和“PointsCentra”字段。。。所以它说,受影响的行0
看:
以下是我在游戏表score1和score2中输入的值:
这是我完成代码后的团队表…保持不变:
请提供帮助。使用左连接而不是内连接:
UPDATE team
LEFT JOIN game g1 ON (team.id = g1.team1_id)
LEFT JOIN game g2 ON (team.id = g2.team2_id)
SET pointsfavor = pointsfavor
+ IF(g1.score1 > g1.score2, g1.score1 - g1.score2, 0)
+ IF(g2.score2 > g2.score1, g2.score2 - g2.score1, 0)
, pointscontra = pointscontra
+ IF(g1.score1 < g1.score2, g1.score2 - g1.score1, 0)
+ IF(g2.score2 < g2.score1, g2.score1 - g2.score2, 0)
WHERE g1.id = 1;
我不知道你的表字段是什么,也不知道你的代码是如何工作的,但我想你的问题在于你的if语句 例如,在第一次更新中,如果g1.score1>g1.score2,那么g1.score1-g1.score2,第二次更新中,如果g1.score1>g1.score2,那么PointsScoreA+0+0,下一次IF也会执行相同的操作,那么在这个查询中,只有pointsfavor受到影响 所以,当第一个子句语句点avor是正确的,那么第二个子句语句是错误的!
再次看一看你的代码 两次更新,每个团队一次:
UPDATE team t1
SET t1.pointsfavor = t1.pointsfavor + IF(game.score1 > game.score2, game.score1 - game.score2, 0)
, t1.pointscontra = t1.pointscontra + IF(game.score2 > game.score1, game.score2 - game.score1, 0)
FROM team
INNER JOIN game ON game.team1_id=t1.id
WHERE game.id = 1
UPDATE team t2
SET t2.pointsfavor = t2.pointsfavor + IF(game.score2 > game.score1, game.score2 - game.score1, 0)
, t2.pointscontra = t2.pointscontra + IF(game.score1 > game.score2, game.score1 - game.score2, 0)
FROM team
INNER JOIN game ON game.team2_id=t2.id
WHERE game.id = 1
thnx。。。它只更新了team.id=1中的pointsfavor…对此有什么答案吗?我不知道你的表字段是什么,也不知道你的代码是如何工作的,但我猜你的问题在于你的if语句: