基于$ get值的mysql join

时间:2012-09-11 21:02:22

标签: php mysql join

我有2张桌子。

联系和投诉。

联系人有3列:

contact_id, contact_name, score
投诉有4栏:

complaint_id, contact_id, score_deduction, complaint_type

我可以从上一页获得价值$_GET['complaint_id']

我要做的是删除具有该特定complaint_id的记录并获取complaints.score_deduction的值并将其添加回contacts.score。

我花了好几个小时,似乎无法弄明白。

请帮忙。

if (isset($_GET['complaint_id'])) {
record_set('complaints',"SELECT * FROM add_complaints WHERE complaint_id = ".$_GET['complaint_id']."");
$contact_id = $row_complaints['contact_id'];
record_set('contact',"SELECT * FROM contacts WHERE contact_id = $contact_id");
$score = $row_contact['contact_score'];
echo $score;

}

1 个答案:

答案 0 :(得分:0)

您可以将其合并为一个查询。

SELECT * FROM add_complaints AS ac
INNER JOIN contacts AS c on ac.contact_id = c.contact_id
WHERE ac.complaint_id = ?

我不熟悉您用于进行数据库查询的任何内容。但我想你会知道如何获得联系人ID,当前分数和分数扣除值。并从那里进行更新查询和删除查询。

如果您想获得更多花哨,只需更新联系人记录而无需选择任何内容:

UPDATE add_complaints AS ac
INNER JOIN contacts AS c on ac.contact_id = c.contact_id
SET c.score = c.score - ac.score_deduction
WHERE ac.complaint_id = ?

然后删除投诉

DELETE FROM add_complaints WHERE complaint_id = ?