LINUX.ORG.RU
ФорумAdmin

Ошибка импортирования MySQL


0

1

В нем плохо разбирюсь, кто подскажет, где ошибка:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE `total`
	SELECT
		sum(p.price*i.count) as `sum`,
		i.item_id,
		i.o' at line 2
DROP TABLE IF EXISTS `total`
CREATE TABLE `total`
	SELECT
		sum(p.price*i.count) as `sum`,
		i.item_id,
		i.owner_id,
		c.char_name,
		c.account_name,
		c.accesslevel
	FROM items i
		LEFT JOIN characters c ON (i.owner_id = c.obj_Id)
		LEFT JOIN prices p ON i.item_id = p.item_id
	GROUP BY owner_id ORDER BY `sum` DESC;

ALTER TABLE `total` ADD PRIMARY KEY ( `owner_id` );
DROP TABLE IF EXISTS `too_many`;
CREATE TABLE `too_many`
	SELECT i.item_id, i.count, p.price, i.count*p.price AS `sum`, p.name, i.owner_id,  c.char_name, cs.level, c.account_name, c.accesslevel
	FROM items i
		LEFT JOIN characters c ON (i.owner_id = c.obj_Id)
		LEFT JOIN character_subclasses cs ON (cs.char_obj_id = c.obj_Id)
		LEFT JOIN prices p ON (p.item_id = i.item_id)
	WHERE ((i.count > 100000 AND i.item_id <> 57)
			OR (i.count*p.price > 10000000 and i.item_id <> 57)
			OR (i.count*p.price > 30000000 and i.item_id = 57)
			OR i.count < 0
			OR i.count*p.price < 0
		)
		AND c.accesslevel < 100
	ORDER BY `sum` DESC;


Последнее исправление: AlexVIP (всего исправлений: 2)

Может «CREATE TABLE»(в который к слову нужно добавить описание структуры таблицы) должен быть отдельно, а «INSERT INTO `total` SELECT sum» отдельно?

Tark ★★
()
Ответ на: комментарий от Tark

Доперло, описания создаваемой таблицы нет вообще, пошел исходники ковырять. Только нифига я не понял, сначала таблица стирается, потом создается, как авторы умудрились не заметить такую оплошность.

AlexVIP
() автор топика
Ответ на: комментарий от AlexVIP

Иначе возвратит ошибку из-за создания новой таблицы с названием тем же, что и у существующей.

Tark ★★
()

может конечно это новое веяние, и я не прав, но у вас повсеместно пропущен AS :) тут :

	SELECT
		sum(p.price*i.count) as `sum`,
		i.item_id __AS__ item_id,
		i.owner_id __AS__ owner_id,
иначе create затруднится с именами столбцов для новой таблицы «i.item_id» и
FROM items i
		LEFT JOIN characters __AS__ c ON (i.owner_id = c.obj_Id)
		LEFT JOIN prices __AS__ p ON i.item_id = p.item_id
тут просто - имена разделяются либо запятой либо ключевым словом.

вы с какого диалекта sql портируете базу ?

ps __AS__ приведён с чёрточками, просто чтобы его выделить.

MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.