Mysql запрос на использование счетчика на вид в php - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть запрос:

$result = mysql_query("CREATE VIEW temporary(IngList) AS (
                         SELECT DISTINCT (r1.Ingredient) 
                           FROM recipes r1, 
                                recipes r2 
                          WHERE r1.Country = '$temp' 
                            AND r2.Country = '$temp2' 
                            AND r1.Ingredient = r2.Ingredient) 
                       SELECT COUNT(*) FROM temporary");

Я хочу, чтобы запрос создал представление, называемое временным, и вернул счетчик количества строк в представлении, временно.Я знаю, что этот код работает без SELECT COUNT(*), потому что я проверил свою базу данных и представление было создано.

И все же этот код выдает ошибку:

У вас есть ошибка в вашем SQLсинтаксис;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с «SELECT COUNT (*) ОТ временного» в строке 1

Я проверил синтаксис, и он кажется правильным.Что, кажется, проблема, потому что это довольно расстраивает.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

Из документации mysql_query :

mysql_query () отправляет уникальный запрос (несколько запросов не поддерживаются) ...

Вы не можете создать представление и выбрать его в одном запросе mysql_query. Вид не нужен:

$sql = sprintf("SELECT COUNT(DISTINCT r1.Ingredient) 
                  FROM recipes r1
                 WHERE r.country = '%s'
                   AND EXISTS(SELECT NULL
                                FROM recipes r2 
                               WHERE r2.Country = '%s' 
                                 AND r1.Ingredient = r2.Ingredient)",
                $temp, $temp2);

$result = mysql_query($sql);
0 голосов
/ 18 апреля 2011

Для начала у вас есть два утверждения.То, что вы пишете, больше похоже на хранимую процедуру.Даже если это сработает, вам понадобится точка с запятой в конце первого утверждения.И еще одно высказывание где-то, говорящее «DROP VIEW ....», когда вы закончите.

И временное представление - это не секвитура.Я не могу найти ссылку на "CREATE VIEW временный".Или, может быть, это создать представление с временным аргументом?Представления не принимают аргументов.

Я думаю, вы можете получить то, что вы хотите, с помощью полупростого оператора SQL, например:

$ result = mysql_query (

"SELECT COUNT(DISTINCT r1.Ingredient)
 FROM recipes r1
 JOIN recipes r2 ON r1.Ingredient = r2.Ingredient
 WHERE r1.Country = '$temp' 
     AND r2.Country = '$temp2'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...