2017-04-18 54 views
0

一个记录值,我在MySQL数据库中的两个表。在表A我坚持认为今天和他们属于(如果他们属于一个)组给出了产品的信息,在表B我认为那应该给,如果他们是在一个的所有产品的检查清单的团体。检查对另一个表的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的: 检查,看是否给出了该产品根据表A它会告诉你表B. 是正确的哪个组的ProductNumber应该属于,所以如果它在tableB中的那个组中,那么它就可以。如果没有,则将其放回记录集中。

我敢肯定,那里有一个简单的方法来做到这一点,我只是不明白。

任何帮助,非常感谢。

感谢

大卫

回答

0

,起初,你的Table 2可能没有合适的数据库架构模式。我建议你这样。

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, 
... 
) 

而且在Table2

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

你的第一行的样品然后,它会更容易做你的工作做好。 如果你想在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

相关问题