2
我正在將表數據從一個CMS導入到另一個CMS。因此,我有一個帶有「pn_」前綴的模型,它是舊的。新表的前面帶有「avsn_」。奇怪的SQL連接產生的結果不同於分割結果
有遊戲變種,畫廊圖像和畫廊類別。這些表是這樣的:
CREATE TABLE `avsn_gallery_categories2variants` (
`categoryId` int(255) unsigned NOT NULL AUTO_INCREMENT,
`gameVariantId` int(255) NULL,
PRIMARY KEY (`categoryId`,`gameVariantId`)
);
CREATE TABLE `avsn_games_variant` (
`psId` int(255) NOT NULL ,
`variantId` int(255) NOT NULL AUTO_INCREMENT ,
`gameId` int(255) NOT NULL ,
`variantTitle` varchar(1000) NOT NULL ,
`consoleId` int(255) NOT NULL ,
`specialGenreID` int(255) NULL,
`releaseDay` int(2) NOT NULL ,
`releaseMonth` int(2) NOT NULL ,
`releaseYear` int(4) NOT NULL ,
`isFreeware` bit NOT NULL ,
`isReleased` bit NOT NULL ,
`installationAdvices` text NULL ,
`gameAdvices` text NULL ,
`additionalInformation` text NULL ,
`cover` varchar(1000) NOT NULL ,
`publishingStatus` int(1) NOT NULL ,
`creatorId` int(255) NOT NULL ,
`lastModified` date NOT NULL ,
`creationDate` date NOT NULL ,
PRIMARY KEY (`variantId`)
);
舊錶是這些:
CREATE TABLE `pn_gallery_categories` (
`gallid` int(3) NOT NULL AUTO_INCREMENT,
`gallname` varchar(80) NOT NULL DEFAULT '',
`gallimg` varchar(50) NOT NULL DEFAULT '',
`server` int(11) NOT NULL DEFAULT '1',
`galloc` longtext NOT NULL,
`description` text NOT NULL,
`parent` int(3) NOT NULL DEFAULT '-1',
`visible` int(1) NOT NULL DEFAULT '0',
`template` varchar(25) NOT NULL DEFAULT 'Default',
`thumbwidth` int(2) unsigned NOT NULL DEFAULT '120',
`numcol` tinyint(3) unsigned NOT NULL DEFAULT '0',
`total` int(10) unsigned NOT NULL DEFAULT '0',
`lastadd` date DEFAULT NULL,
PRIMARY KEY (`gallid`),
KEY `gallid` (`gallid`)
) ENGINE=MyISAM AUTO_INCREMENT=2166 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
表avsn_gallery_categories2variants不正確導入。一個特定類別與一個變體有多個組合。這應該是不可能的,因爲舊模型只允許一種組合。我覺得有什麼不妥的進口JOIN:
INSERT INTO
`avsn_gallery_categories2variants`
(
SELECT
variant.variantId AS `variantId`,
gallid AS `categoryId`
FROM
pn_gallery_categories
JOIN
avsn_games_variant variant ON gallimg = variant.cover
);
我所做的驗證:
1確認,真的有1類:
mysql> SELECT * FROM avsn_gallery_categories WHERE categoryId = 1897;
+------------+----------+---------------+---------------+--------+----------------+
| categoryId | parentId | title | folder | userId | isUserCategory |
+------------+----------+---------------+---------------+--------+----------------+
| 1897 | 630 | Gray Matter 2 | G/GrayMatter2 | -1 | |
+------------+----------+---------------+---------------+--------+----------------+
1 row in set (0.00 sec)
2進行當然,直接請求它只有一個關聯:
mysql> SELECT * FROM avsn_gallery_categories2variants WHERE categoryId = 1897;
+------------+---------------+
| categoryId | gameVariantId |
+------------+---------------+
| 1897 | 365 |
| 1897 | 542 |
+------------+---------------+
2 rows in set (0.01 sec)
糟糕! 2排。好了,現在檢查聯接領域的這兩種方式:
類別的封面:
mysql> SELECT gallimg FROM pn_gallery_categories WHERE gallid = 1897;
+-----------------+
| gallimg |
+-----------------+
| graymatter2.png |
+-----------------+
1 row in set (0.00 sec)
ID 365:
mysql> SELECT cover FROM avsn_games_variant WHERE variantId = 365;
+-----------+
| cover |
+-----------+
| radau.jpg |
+-----------+
1 row in set (0.00 sec)
ID 542:
mysql> SELECT cover FROM avsn_games_variant WHERE variantId = 542;
+-----------+
| cover |
+-----------+
| tkkg5.jpg |
+-----------+
1 row in set (0.00 sec)
ERRM。是啊。它們都不符合該類別。出了什麼問題?我有點絕望地找到解決方案。 Mabye我寫了太多的SQL,並且因爲擁有像5,5k行的導入腳本而無法再看到問題。
我很感激任何好的答案!
哦男人....我真是個傻瓜。謝謝你在我臉上的正面衝擊:D就是這樣,謝謝。這是我的愚蠢:D –
不客氣。發生在我們所有人身上:) –