2017-03-28 10 views
0

こんにちは私は、ユニークなケースコードを入力して、ケーステーブルからケースへのアクセスを登録する必要があります。データベースは、ケース・コードが存在するかどうかを確認する必要があり、それは債権者1回の試行はTHEC12Cを追加する場合、それはユーザーを小文字にレコードを追加しますので、ユーザーがすでにそれにMySQL IFケースExsistsユーザが接続されているかどうかをチェック

cases 
     +----+-----------+-------------+ 
     | id | case_code | case_name | 
     +----+-----------+-------------+ 
     | 1 | THEC12C | Test Case 1 | 
     | 2 | ABCD23A | Test Case 2 | 
     +----+-----------+-------------+ 

case_creditors 
     +----+---------+-------------+ 
     | id | case_id | creditor_id | 
     +----+---------+-------------+ 
     | 1 |  1 |   3 | 
     | 2 |  2 |   1 | 
     +----+---------+-------------+ 

を登録されているかどうかを確認するためにそのIDを使用しない場合

case_creditors 
+----+---------+-------------+ 
| id | case_id | creditor_id | 
+----+---------+-------------+ 
| 1 |  1 |   3 | 
| 2 |  2 |   1 | 
| 3 |  1 |   1 | 
+----+---------+-------------+ 

彼らは再び同じケースを追加しようとした場合、私は私がこの 1を達成するために2つのクエリを使用することができます知っている、このユーザーがすでにこの場合

に登録されているPHPを伝えることができますので、それが行を返します。 )ケースコードはcaseテーブルに存在しますか?真/偽 は3}

+0

あなたの質問は何ですか?クエリを実行するSQLを探していますか、タスクの実行方法に関するより多くの/異なるアイデアのために探していますか? –

答えて

0

「偽アドオンがcase_creditorsにCASE_IDとcreditor_idのrecored場合既に登録されている」真の場合、私は完全に違っそれを行うだろう - trueの場合)2 偽RUE/case_creditorsのレコードがあります。

  1. case_creditorsテーブル内の単一case_idunique indexcreditor_idフィールドを作成します。これにより、重複するレコードが挿入されるのを防ぐことができます。

  2. 以下のinsert ... select ... query to insert data into case_creditors`テーブルを使用してください。

重複キーエラーで返された場合は、すでに債権者に割り当てられています。影響を受ける行が0の場合、case_codeは存在しません。影響を受けた行が1である場合、ケースは債権者に割り当てられている:

insert into case_creditors (case_id, creditor_id) 
select id, ... from cases where case_code='...' 

代替最初...の代わりに、債権者ID、及び第2 ...の代わりに、ケースコード。

+0

私は計画段階でもう少し時間を費やしていたはずだが、今はすべて良い –

関連する問題