Forum Webscript.Ru

Общие => Базы данных => Тема начата: Vivaldy от 01 Сентября 2004, 12:45:58

Название: Проблема c create temporary
Отправлено: Vivaldy от 01 Сентября 2004, 12:45:58
Помгите, немогу никак понять в чем дело.

делаю запрос:

SELECT lng.id_s as id FROM lng WHERE lng.name_value=\'tbl_fpp\'

результат:
--------
|  id  |
--------
|  1  |
--------
|  2  |
--------

затем делаю такие два запроса:

CREATE TEMPORARY TABLE tempo SELECT lng.id_s as id FROM lng WHERE lng.name_value=\'tbl_fpp\';

select * from tempo

результат:

--------
|     |
--------

т.е. говорит что таблица пуста, но почему....????
Но и не ругается вообще... просто выдает пусто.

затем делаю такие запросы:

CREATE TEMPORARY TABLE tempo SELECT lng.id_s as id FROM lng WHERE lng.name_value=\'tbl_fpp\';

SELECT COUNT(*) FROM s LEFT JOIN lng USING (id) WHERE tempo.id IS NULL;

то в данном случае говоорт:
Error: 1109 - Unknown table \'tempo\' in where clause

вообще не понятно... ???
Название: Проблема c create temporary
Отправлено: fidget от 01 Сентября 2004, 13:42:03
а что выдает этот запрос?

CREATE TEMPORARY TABLE tempo SELECT lng.id_s as id FROM lng WHERE lng.name_value=\'tbl_fpp\';

всмысле affected rows

Цитировать

SELECT COUNT(*) FROM s LEFT JOIN lng USING (id) WHERE tempo.id IS NULL;
то в данном случае говоорт:
Error: 1109 - Unknown table \'tempo\' in where clause


ну здесь все правильно.
оно действительно не знает что это у тебя за таблица.
Название: Проблема c create temporary
Отправлено: Vivaldy от 01 Сентября 2004, 14:08:47
этот запрос:
CREATE TEMPORARY TABLE tempo SELECT lng.id_s as id FROM lng WHERE lng.name_value=\'tbl_fpp\';

ничего выдавать не должен, вообщето на сколько я знаю он должен сформировать временную таблицу с одним столбцом id и кол-вом строк в зависомости от возврата, в данном случае двумя.

т.е. таблица \'tempo\' должна существовать,так как ее создает этот запрос.

кроме того выполнение запроса:
select * from tempo  - ошибки не дает.. значит таблица всеже создана.

а когда делаешь:
SELECT COUNT(*) FROM s LEFT JOIN lng USING (id) WHERE tempo.id IS NULL
уже говорит что нет такой таблицы....
Название: Проблема c create temporary
Отправлено: fidget от 01 Сентября 2004, 14:21:29
для тех кто на подводной лодке повторяю:

а что выдает этот запрос?

CREATE TEMPORARY TABLE tempo SELECT lng.id_s as id FROM lng WHERE lng.name_value=\'tbl_fpp\';

всмысле affected rows


Цитировать

уже говорит что нет такой таблицы...


потому что ты ее не указал в части from. поэтому оно не знает о существовании такой таблицы в запросе.
Название: Проблема c create temporary
Отправлено: Vivaldy от 01 Сентября 2004, 15:59:41
CREATE TEMPORARY TABLE tempo SELECT lng.id_slng as id FROM lng WHERE lng.name_value=\'tbl_fpp\';

при выполнении этого запроса говорит 2 row affected

Цитировать
потому что ты ее не указал в части from. поэтому оно не знает о существовании такой таблицы в запросе.


спасибо вижу..
но почему если выполняешь потом запрос:
select * from tempo

то пусто, хотя row affected опять 2
Название: Проблема c create temporary
Отправлено: fidget от 01 Сентября 2004, 16:38:44
1. select выполняешь в той же сессии?
2. есть ли в базе таблица с названием \'tempo\', но не временная а обыкновенная?
Название: Проблема c create temporary
Отправлено: Vivaldy от 01 Сентября 2004, 17:09:17
1. сессия одна и та же
2. в базе такой таблицы нет
Название: Проблема c create temporary
Отправлено: fidget от 02 Сентября 2004, 00:32:56
1. какая версия mysql?
2. можешь воспроизвести это на каком-нибудь другом сервере mysql?