powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Неправильное имя столбца?
25 сообщений из 26, страница 1 из 2
Неправильное имя столбца?
    #38787277
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Написал процедуру, но в 9-ой строчке появляется ошибка (это последняя строчка в объявлении процедуры - со столбцом "1"). В чем проблема?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DELIMITER //
CREATE PROCEDURE find_frequency_distrtibution ()
BEGIN
	CREATE TEMPORARY TABLE distribution(
		date DATETIME NOT NULL,
		adnest_name VARCHAR(306) NOT NULL,
		adnest_external_id VARCHAR(75) NOT NULL,
		adnest_id BIGINT(11) NOT NULL  DEFAULT 0,
		ratio DEMICAL(1,8) NOT NULL DEFAULT 0.00000000,
		average DEMICAL(10,2) NOT NULL DEFAULT 0.00,
		effective_adnest_id VARCHAR(75) NOT NULL,
		'1' INTEGER NOT NULL DEFAULT 0,
	........
END;//
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787288
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кавычка не та...
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787290
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я уже пробовал ставить двойные - косяк остается..
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787298
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787299
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае, не рекомендую такие имена полей использовать.
Нужно добавить спереди какой-то символ-не цифру.
Букву или подчёркивание.
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787300
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На удивление, обратные ковычки подошли.. спасибо Alex_Ustinov
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787305
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на здоровье, только запомните о чем говорил выше MasterZiv,
использование таких полей предполагает теперь практически постоянное заключение имени поля в такие обратные кавычки,
после кувырканий с такими именами вы скоре придете к выводу ,что проще все-таки называть поля более благозвучно...
`1` = POLE1 = VASJA1 = PETJA1 = IWANT1 во избежание недоразумений...
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787307
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понимаю, просто создаваемая табличка содержит некоторое распределение. Так вот эта самая единица "1" - это значение по абсциссе.
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787309
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так назовите так
Код: sql
1.
'RASPRED' INTEGER NOT NULL DEFAULT 0
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787311
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без кавычек конечно...
RASPRED INTEGER NOT NULL DEFAULT 0
или весь смысл в том, что в названии были кавычки...?
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787312
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
'RASPRED' INTEGER NOT NULL DEFAULT 0


Распределение хранится не в столбце с названием "1". "1" - это только один столбец гистограммы. Точно так же в таблице есть "2", "3" и т.д.
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787318
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы уверены, что вам нужна именно такая структура??? в корне не правильно, как мне кажется...
x,y,z так и хранят
CREATE tablexyz (
id INT AUTOINCREMENT,
nm char(),
dt DATETIME,
x INTEGER NOT NULL DEFAULT 0,
y INTEGER NOT NULL DEFAULT 0,
z INTEGER NOT NULL DEFAULT 0)
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787322
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, страктура именно такая нужна. Хранится частотная гистограмма. Пример здесь - http://www.inventech.ru/pic/methods-10.gif
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787323
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас0н,

ну, если вы можете на 146% гарантировать, что количество этих полей не изменится и что они представляют собой "атомарные" данные, то можно и так.
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787324
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще возникает трудность с занесением значений в поля. Вот тот же запрос, только больше кода привожу:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
DELIMITER //
CREATE PROCEDURE find_frequency_distrtibution ()
BEGIN
	CREATE TEMPORARY TABLE distribution(
		date DATETIME NOT NULL,
		adnest_name VARCHAR(306) NOT NULL,
		adnest_external_id VARCHAR(75) NOT NULL,
		adnest_id BIGINT(11) NOT NULL  DEFAULT 0,
		ratio DEMICAL(1,8) NOT NULL DEFAULT 0.00000000,
		average DEMICAL(10,2) NOT NULL DEFAULT 0.00,
		effective_adnest_id VARCHAR(75) NOT NULL,
		`1` BIGINT(10) NOT NULL DEFAULT 0,
		`2` BIGINT(10) NOT NULL DEFAULT 0,
		`3` BIGINT(10) NOT NULL DEFAULT 0,
		`4` BIGINT(10) NOT NULL DEFAULT 0,
		`5` BIGINT(10) NOT NULL DEFAULT 0,
		`6` BIGINT(10) NOT NULL DEFAULT 0,
		`7` BIGINT(10) NOT NULL DEFAULT 0,
		`8` BIGINT(10) NOT NULL DEFAULT 0,
		`9` BIGINT(10) NOT NULL DEFAULT 0,
		`10` BIGINT(10) NOT NULL DEFAULT 0,
		`11-20` BIGINT(10) NOT NULL DEFAULT 0,
		`21-30` BIGINT(10) NOT NULL DEFAULT 0,
		`31-40` BIGINT(10) NOT NULL DEFAULT 0,
		`41-50` BIGINT(10) NOT NULL DEFAULT 0,
		`51-60` BIGINT(10) NOT NULL DEFAULT 0,
		`61-70` BIGINT(10) NOT NULL DEFAULT 0,
		`71-80` BIGINT(10) NOT NULL DEFAULT 0,
		`81-90` BIGINT(10) NOT NULL DEFAULT 0,
		`91-100` BIGINT(10) NOT NULL DEFAULT 0,
		`101-150` BIGINT(10) NOT NULL DEFAULT 0,
		`151-200` BIGINT(10) NOT NULL DEFAULT 0,
		`201-250` BIGINT(10) NOT NULL DEFAULT 0,
		`251-300` BIGINT(10) NOT NULL DEFAULT 0,
		`>300` BIGINT(10) NOT NULL DEFAULT 0
	);
	SELECT hist_from_dt FROM parameters WHERE param_id=`1` INTO @start;
	set @end := adddate(@start, interval 10 day);
	WHILE @start < @end DO
		INSERT INTO distribution
		(
			date,
			adnest_name,
			adnest_external_id,
			adnest_id,
			ratio,
			average,
			effect_adnest_id,
			`1`,
			`2`,
			`3`,
			`4`,
			`5`,
			`6`,
			`7`,
			`8`,
			`9`,
			`10`,
			`11-20`,
			`21-30`,
			`31-40`,
			`41-50`,
			`51-60`,
			`61-70`,
			`71-80`,
			`81-90`,
			`91-100`,
			`101-150`,
			`151-200`,
			`201-250`,
			`251-300`,
			`>300`	
		)
		VALUES(
			SELECT 
                 ................



Проблема возникает в строчке с "VALUES( SELECT....)"
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38787326
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас0нПроблема возникает в строчке с "VALUES( SELECT....)"потому что не надо изобретать свой синтаксис - там либо валуес, либо селект
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788173
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникает ошибка:
Код: sql
1.
unknown column '1' in where clause



С чем это может быть связано?

Вот весь запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
DELIMITER //
CREATE PROCEDURE find_frequency_distrtibution ()
BEGIN
	CREATE TEMPORARY TABLE distribution(
		date DATETIME NOT NULL,
		adnest_name VARCHAR(306) NOT NULL,
		adnest_external_id VARCHAR(75) NOT NULL,
		adnest_id INTEGER NOT NULL  DEFAULT 0,
		ratio DOUBLE NOT NULL DEFAULT 0.0,
		average DOUBLE NOT NULL DEFAULT 0.0,
		effective_adnest_id VARCHAR(75) NOT NULL,
		`1` INTEGER NOT NULL DEFAULT 0,
		`2` INTEGER NOT NULL DEFAULT 0,
		`3` INTEGER NOT NULL DEFAULT 0,
		`4` INTEGER NOT NULL DEFAULT 0,
		`5` INTEGER NOT NULL DEFAULT 0,
		`6` INTEGER NOT NULL DEFAULT 0,
		`7` INTEGER NOT NULL DEFAULT 0,
		`8` INTEGER NOT NULL DEFAULT 0,
		`9` INTEGER NOT NULL DEFAULT 0,
		`10` INTEGER NOT NULL DEFAULT 0,
		`11-20` INTEGER NOT NULL DEFAULT 0,
		`21-30` INTEGER NOT NULL DEFAULT 0,
		`31-40` INTEGER NOT NULL DEFAULT 0,
		`41-50` INTEGER NOT NULL DEFAULT 0,
		`51-60` INTEGER NOT NULL DEFAULT 0,
		`61-70` INTEGER NOT NULL DEFAULT 0,
		`71-80` INTEGER NOT NULL DEFAULT 0,
		`81-90` INTEGER NOT NULL DEFAULT 0,
		`91-100` INTEGER NOT NULL DEFAULT 0,
		`101-150` INTEGER NOT NULL DEFAULT 0,
		`151-200` INTEGER NOT NULL DEFAULT 0,
		`201-250` INTEGER NOT NULL DEFAULT 0,
		`251-300` INTEGER NOT NULL DEFAULT 0,
		`>300` INTEGER NOT NULL DEFAULT 0
	);
	SELECT hist_from_dt FROM parameters WHERE param_id=`1` INTO @start;
	set @end := adddate(@start, interval 10 day);
	WHILE @start < @end DO
		INSERT INTO distribution
		(
			date,
			adnest_name,
			adnest_external_id,
			adnest_id,
			ratio,
			average,
			effective_adnest_id,
			`1`,
			`2`,
			`3`,
			`4`,
			`5`,
			`6`,
			`7`,
			`8`,
			`9`,
			`10`,
			`11-20`,
			`21-30`,
			`31-40`,
			`41-50`,
			`51-60`,
			`61-70`,
			`71-80`,
			`81-90`,
			`91-100`,
			`101-150`,
			`151-200`,
			`201-250`,
			`251-300`,
			`>300`
		)
		SELECT 
		@start,
		v_adnests.name,
		v_adnests.external_id,
		tab3.*		
		FROM v_adnests
		JOIN
		(
			SELECT 
				adnest_mapping_composite.adnest_id, 
				adnest_mapping_composite.ratio,
				aver.average as average,
				tab2.*
			FROM adnest_mapping_composite
			JOIN 
			(
				SELECT 
					tab.adnest_id as effective_adnest_id,
					SUM(tab.frequency = 1) AS "1",
					SUM(tab.frequency = 2) AS "2",
					SUM(tab.frequency = 3) AS "3",
					SUM(tab.frequency = 4) AS "4",
					SUM(tab.frequency = 5) AS "5",
					SUM(tab.frequency = 6) AS "6",
					SUM(tab.frequency = 7) AS "7",
					SUM(tab.frequency = 8) AS "8",
					SUM(tab.frequency = 9) AS "9",
					SUM(tab.frequency = 10) AS "10",
					SUM(tab.frequency between 11 and 20) AS "11-20",
					SUM(tab.frequency between 21 and 30) AS "21-30",
					SUM(tab.frequency between 31 and 40) AS "31-40",
					SUM(tab.frequency between 41 and 50) AS "41-50",
					SUM(tab.frequency between 51 and 60) AS "51-60",
					SUM(tab.frequency between 61 and 70) AS "61-70",
					SUM(tab.frequency between 71 and 80) AS "71-80",
					SUM(tab.frequency between 81 and 90) AS "81-90",
					SUM(tab.frequency between 91 and 100) AS "91-100",
					SUM(tab.frequency between 101 and 150) AS "101-150",
					SUM(tab.frequency between 151 and 200) AS "151-200",
					SUM(tab.frequency between 201 and 250) AS "201-250",
					SUM(tab.frequency between 251 and 300) AS "251-300",
					SUM(tab.frequency > 300) AS ">300"
				FROM
				(
					SELECT 
						adnest_id, 
						visitor_id, 
						SUM(num) AS frequency
					FROM hist_impressions
					INNER JOIN timeslot t ON t.timeslot_id = hist_impressions.timeslot_id
					WHERE start_date BETWEEN @start AND ADDDATE(@start, INTERVAL 7 DAY)
					GROUP BY adnest_id, visitor_id
				) tab
				GROUP BY 
					tab.adnest_id
			) tab2
			ON tab2.effective_adnest_id = adnest_mapping_composite.effective_adnest_id
			JOIN 
			(
				SELECT 
					adnest_id AS effective_adnest_id,
					SUM(num) as impressions_sum,
					COUNT(DISTINCT visitor_id) as distinct_visitors,
					SUM(num)/COUNT(DISTINCT visitor_id) as average
				FROM hist_impressions
				INNER JOIN timeslot t ON t.timeslot_id = hist_impressions.timeslot_id
				WHERE start_date BETWEEN @start AND ADDDATE(@start, INTERVAL 7 DAY)
				GROUP BY adnest_id
			) aver
			ON aver.effective_adnest_id = adnest_mapping_composite.effective_adnest_id
		) tab3
		ON tab3.adnest_id = v_adnests.adnest_id
		limit 5;
		SET @start := ADDDATE(@start, INTERVAL 7 DAY);
	END WHILE;
	SELECT * FROM distribution;
END;//

CALL find_frequency_distrtibution();
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788193
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас0нРаспределение хранится не в столбце с названием "1". "1" - это только один столбец гистограммы. Точно так же в таблице есть "2", "3" и т.д.
Ну так добавьте ВСЕМ столбцам вменяемый префикс (скажем, histogram_1, histogram_2, etc.). Зачем раскладывать по огороду дополнительные грабли?
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788255
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дело в том, что нужны именно такие названия столбцов
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788266
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
...WHERE param_id=`1`...


данные обратные кавычки используются только для определения "столбцов" и таблиц и.т.д.
SELECT FROM `МОЯБАЗА`.`МОЯТАБЛ`.`МОЕ ПООЛЕ`

в остальных случаях используйте обычные кавычки _'_ или _"_
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788273
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, не заметил...
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788295
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MySQL достаточно хорошо информирует об ошибках, достаточно найти первое вхождение фразы в ошибке...
так что никогда не паникуйте...
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788325
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас0нНа удивление, обратные ковычки подошли.. спасибо Alex_Ustinov

мы бы удивились, если бы подошли двойные!
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788472
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас0ндело в том, что нужны именно такие названия столбцовкому нужны? и зачем?
...
Рейтинг: 0 / 0
Неправильное имя столбца?
    #38788867
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас0нЯ понимаю, просто создаваемая табличка содержит некоторое распределение. Так вот эта самая единица "1" - это значение по абсциссе.


тогда все еще хуже, тогда тебе надо учиться проектировать реляционные бд.

таких полей не должно быть, должна быть дочерняя таблица с этим значением в поле, в ключе.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Неправильное имя столбца?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]