Запрос с временной таблицей в mySQL
От: Wavy  
Дата: 06.03.06 07:30
Оценка:
Задача — выбрать должников, не заплативших за указанный месяц нужную сумму (mySQL 4.0.18 + PHP4).

Запрос:
CREATE TEMPORARY TABLE tmp (UserID_R INT, amount_sum INT); 
INSERT INTO tmp (UserID_R, amount_sum) SELECT Payments.UserID_R, SUM(Payments.amount) FROM Payments WHERE YEAR(Payments.Date)=2006 AND MONTH(Payments.Date)=1 AND Payments.Type=2; 
SELECT u.* FROM Users AS u WHERE u.ID IN (tmp.UserID_R) AND tmp.amount_sum<50; 
DROP TABLE tmp;


Говорит ошибка в синтаксисе (начиная со второй строки). Все указанные колонки в исходных таблицах присутствуют.
Подскажите, что не так?
Re: Запрос с временной таблицей в mySQL
От: fidget Украина  
Дата: 06.03.06 09:03
Оценка:
Здравствуйте, Wavy, Вы писали:

W>Задача — выбрать должников, не заплативших за указанный месяц нужную сумму (mySQL 4.0.18 + PHP4).


W>Запрос:

W>
W>CREATE TEMPORARY TABLE tmp (UserID_R INT, amount_sum INT); 
W>INSERT INTO tmp (UserID_R, amount_sum) SELECT Payments.UserID_R, SUM(Payments.amount) FROM Payments WHERE YEAR(Payments.Date)=2006 AND MONTH(Payments.Date)=1 AND Payments.Type=2; 
W>SELECT u.* FROM Users AS u WHERE u.ID IN (tmp.UserID_R) AND tmp.amount_sum<50; 
W>DROP TABLE tmp;
W>


W>Говорит ошибка в синтаксисе (начиная со второй строки). Все указанные колонки в исходных таблицах присутствуют.

W>Подскажите, что не так?

А текст ошибки кто приводить будет?
Re[2]: Запрос с временной таблицей в mySQL
От: Аноним  
Дата: 06.03.06 09:26
Оценка:
W>>Задача — выбрать должников, не заплативших за указанный месяц нужную сумму (mySQL 4.0.18 + PHP4).

W>>Запрос:

W>>
W>>CREATE TEMPORARY TABLE tmp (UserID_R INT, amount_sum INT); 
W>>INSERT INTO tmp (UserID_R, amount_sum) SELECT Payments.UserID_R, SUM(Payments.amount) FROM Payments WHERE YEAR(Payments.Date)=2006 AND MONTH(Payments.Date)=1 AND Payments.Type=2; 
W>>SELECT u.* FROM Users AS u WHERE u.ID IN (tmp.UserID_R) AND tmp.amount_sum<50; 
W>>DROP TABLE tmp;
W>>


W>>Говорит ошибка в синтаксисе (начиная со второй строки). Все указанные колонки в исходных таблицах присутствуют.

W>>Подскажите, что не так?

F>А текст ошибки кто приводить будет?


А текст блин стандартный, толку от него не много...

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 '; INSERT INTO tmp SELECT Payments.UserID_R, SUM(Payments.amount
Re[3]: Запрос с временной таблицей в mySQL
От: fidget Украина  
Дата: 06.03.06 09:42
Оценка:
Здравствуйте, Аноним, Вы писали:

W>>>Задача — выбрать должников, не заплативших за указанный месяц нужную сумму (mySQL 4.0.18 + PHP4).


W>>>Запрос:

W>>>
W>>>CREATE TEMPORARY TABLE tmp (UserID_R INT, amount_sum INT); 
W>>>INSERT INTO tmp (UserID_R, amount_sum) SELECT Payments.UserID_R, SUM(Payments.amount) FROM Payments WHERE YEAR(Payments.Date)=2006 AND MONTH(Payments.Date)=1 AND Payments.Type=2; 
W>>>SELECT u.* FROM Users AS u WHERE u.ID IN (tmp.UserID_R) AND tmp.amount_sum<50; 
W>>>DROP TABLE tmp;
W>>>


W>>>Говорит ошибка в синтаксисе (начиная со второй строки). Все указанные колонки в исходных таблицах присутствуют.

W>>>Подскажите, что не так?

F>>А текст ошибки кто приводить будет?


А>А текст блин стандартный, толку от него не много...


А>
А>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 '; INSERT INTO tmp SELECT Payments.UserID_R, SUM(Payments.amount 
А>


А вы что в одном mysql_query() несколько запросов пишите?
Кстати в INSERT .. SELECT у вас все равно ошибка будет, вы используете SUM() и при этом не используете GROUP BY.
Re[4]: Запрос с временной таблицей в mySQL
От: Аноним  
Дата: 06.03.06 09:46
Оценка:
W>>>>Задача — выбрать должников, не заплативших за указанный месяц нужную сумму (mySQL 4.0.18 + PHP4).

W>>>>Запрос:

W>>>>
W>>>>CREATE TEMPORARY TABLE tmp (UserID_R INT, amount_sum INT); 
W>>>>INSERT INTO tmp (UserID_R, amount_sum) SELECT Payments.UserID_R, SUM(Payments.amount) FROM Payments WHERE YEAR(Payments.Date)=2006 AND MONTH(Payments.Date)=1 AND Payments.Type=2; 
W>>>>SELECT u.* FROM Users AS u WHERE u.ID IN (tmp.UserID_R) AND tmp.amount_sum<50; 
W>>>>DROP TABLE tmp;
W>>>>


W>>>>Говорит ошибка в синтаксисе (начиная со второй строки). Все указанные колонки в исходных таблицах присутствуют.

W>>>>Подскажите, что не так?

F>>>А текст ошибки кто приводить будет?


А>>А текст блин стандартный, толку от него не много...


А>>
А>>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 '; INSERT INTO tmp SELECT Payments.UserID_R, SUM(Payments.amount 
А>>


F>А вы что в одном mysql_query() несколько запросов пишите?

F>Кстати в INSERT .. SELECT у вас все равно ошибка будет, вы используете SUM() и при этом не используете GROUP BY.

Да, это один запрос, — разве так нельзя?
Не подскажете как же все таки этот запрос должен выглядеть? Что-то я уже заколебался варианты перебирать...
Re: Запрос с временной таблицей в mySQL
От: FunnyRabbit Россия  
Дата: 06.03.06 09:47
Оценка:
Здравствуйте, Wavy, Вы писали:

W>Задача — выбрать должников, не заплативших за указанный месяц нужную сумму (mySQL 4.0.18 + PHP4).


W>Запрос:

W>
W>CREATE TEMPORARY TABLE tmp (UserID_R INT, amount_sum INT); 
W>INSERT INTO tmp (UserID_R, amount_sum) SELECT Payments.UserID_R, SUM(Payments.amount) FROM Payments WHERE YEAR(Payments.Date)=2006 AND MONTH(Payments.Date)=1 AND Payments.Type=2; 
W>SELECT u.* FROM Users AS u WHERE u.ID IN (tmp.UserID_R) AND tmp.amount_sum<50; 
W>DROP TABLE tmp;
W>


W>Говорит ошибка в синтаксисе (начиная со второй строки). Все указанные колонки в исходных таблицах присутствуют.

W>Подскажите, что не так?

Что не так? Ты используешь SUM(...), а значит должно быть условие группировки GROUP BY. Вот тебе и ошибка.
То что меня не убивает, делает меня умнее.
Re[5]: Запрос с временной таблицей в mySQL
От: FunnyRabbit Россия  
Дата: 06.03.06 09:50
Оценка:
Здравствуйте, Аноним, Вы писали:

W>>>>>Запрос:

W>>>>>
W>>>>>CREATE TEMPORARY TABLE tmp (UserID_R INT, amount_sum INT); 
W>>>>>INSERT INTO tmp (UserID_R, amount_sum) SELECT Payments.UserID_R, SUM(Payments.amount) FROM Payments WHERE YEAR(Payments.Date)=2006 AND MONTH(Payments.Date)=1 AND Payments.Type=2 GROUP BY Payments.UserID_R; 
W>>>>>SELECT u.* FROM Users AS u WHERE u.ID IN (tmp.UserID_R) AND tmp.amount_sum<50; 
W>>>>>DROP TABLE tmp;
W>>>>>


А>Да, это один запрос, — разве так нельзя?

А>Не подскажете как же все таки этот запрос должен выглядеть? Что-то я уже заколебался варианты перебирать...

Выделил "основное".
То что меня не убивает, делает меня умнее.
Re[5]: Запрос с временной таблицей в mySQL
От: fidget Украина  
Дата: 06.03.06 13:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Да, это один запрос, — разве так нельзя?

А>Не подскажете как же все таки этот запрос должен выглядеть? Что-то я уже заколебался варианты перебирать...

Если мне не изменяет память то несколько запросов можно только в 5м PHP делать.
А по поводу GROUP BY, гм .. ну если вы делаете такую ошибку, то может проще почитать теорию и понять как оно работает?
Re[6]: Запрос с временной таблицей в mySQL
От: Аноним  
Дата: 07.03.06 04:00
Оценка:
Здравствуйте, fidget, Вы писали:

А>>Да, это один запрос, — разве так нельзя?

А>>Не подскажете как же все таки этот запрос должен выглядеть? Что-то я уже заколебался варианты перебирать...

F>Если мне не изменяет память то несколько запросов можно только в 5м PHP делать.

F>А по поводу GROUP BY, гм .. ну если вы делаете такую ошибку, то может проще почитать теорию и понять как оно работает?

2 fidget: Заметано Действительно, не сталкивался с такими запросами раньше...

Спасибо всем за ответы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.