2017-04-18 30 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