0

私は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;

}
4

1 に答える 1

0

それを1つのクエリに組み合わせることができます。

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

私はあなたがDBクエリを作成するために使用しているものに精通していません。ただし、連絡先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 = ?
于 2012-09-11T21:31:06.610 に答える