2017-04-18 5 views
0

MySqlデータベースに2つのテーブルがあります。 テーブルA私は今日のために与えられた製品に関する情報と、それが属しているグループについての情報をで保持しています。テーブルB私は、それらが1つに含まれている場合に与えられるべきすべての製品のチェックリストを保持しますグループのレコードの値を別のテーブルと照合MySql

TableA 

id Group ProductNumber 
1 Group3 1234 
2 Group2 4321 
3 Group2 14235 
4 Group3 15423 
5 Group3 14236 
6 Group2 172883 
7 Group1 198334 
8 Group2 90399209 
9 Group1 78877 

Table2

私は基本的にMySQLでこれを実行する必要があります。製品が出て与えられたかどうかを確認するために チェックは、それがどのようなグループProductNumberがわかりますテーブルAにはテーブルB に応じて正しいものでしたに属している必要がありますので、テーブルBのそのグループの場合は、その大丈夫です。そうでなければ、レコードセットに戻します。

私は確かにこれを行う簡単な方法は、私はそれを把握することはできません。

ご協力いただきまして誠にありがとうございます。

おかげ

デビッド

答えて

0

まず、Table 2のスキーマは、右のDBスキーマではないかもしれません。私はあなたにこのようなことをお勧めします。 Table2

INSERT INTO `TABLE2` (product_id, group_id, manufacturer_id, product_number) 
VALUE (1, 3, 1, 1234); 

CREATE TABLE `TABLE2` (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
product_id INT NOT NULL, 
group_id ENUM(1,2,3) NOT NULL, 
manufacturer_id INT NOT NULL, 
number INT NOT NULL, 
... 
) 

そして、あなたの最初の行のサンプルそれからあなたの仕事を行うには非常に簡単だろう。 Table1で間違ったデータを消去したい場合は、MySQL TRIGGERを使用してください。 特定の時間内に間違ったデータを消去したい場合は、PROCEDUREとし、いつでも実行できます。

次に、Table1の行が正しいデータであるかどうかを確認するクエリです。

SELECT t1.id, IF(t1.group=t2.group_id, 'Right', 'Wrong') AS 'Check' 
FROM `TABLE1` AS t1 
LEFT JOIN `TABLE2` AS t2 ON t1.product_number=t2.product_number 
; 
+0

回答ありがとうございます。残念ながら、私は既存のデータとしてテーブルのスキーマを制御できません:-( – David

関連する問題