Вопрос

Я пытаюсь заставить этот запрос работать, но я получаю эту ошибку:Неизвестный столбец "zips.city" в разделе "наличие предложения"

`$query = "SELECT
    zips.*
    FROM
    zips
    HAVING
    zips.city LIKE '%$city%' 
    AND
    zips.stateabbr LIKE '%$state%' 
    LIMIT 1";
$result = mysql_query($query) or die (mysql_error());`

в моей таблице zips есть столбец city, поэтому я не уверен, в чем проблема, я знаю, что обращаюсь к базе данных, потому что я могу выполнить этот запрос без ошибок:

$zip1query = "SELECT 
         zips.*
         FROM 
         zips
         WHERE
         zips.zip = '$zip'              
         ";

мы были бы очень признательны за любой совет!Спасибо!

Это было полезно?

Решение

Тот Самый having предложение не означает то же самое, что where оговорка :при выполнении простого запроса вы должны использовать where -- это то, что вы сделали в своем втором запросе, это работает.

having используется, когда условие должно быть применено к результату group by оговорка.


Это означает, что здесь ваш запрос должен быть построен таким образом :

$query = "SELECT zips.*
    FROM zips
    where zips.city LIKE '%$city%' 
        AND zips.stateabbr LIKE '%$state%' 
    LIMIT 1";


При этом, если у вас все еще есть ошибка о несуществующем или не найденном столбце (по крайней мере, для city и/или stateabbr), это будет потому, что этот столбец не существует в вашей таблице.

В этом случае мы мало что можем сделать :вам нужно будет проверить структуру вашей таблицы, чтобы определить, какие столбцы она содержит.

Вы можете проверить эту структуру с помощью веб-инструмента, такого как phpMyAdmin, или с помощью инструкции SQL, такой как :

desc zips;


Для справки, цитирование Страница руководства MySQL для select :

Стандарт SQL требует, чтобы HAVING ссылался только на столбцы в GROUP BY предложение или столбцы, используемые в агрегатных функциях.
...

Не используйте HAVING для элементов, которые должны быть в WHERE оговорка.
Например, не следует писать следующее:

SELECT col_name FROM tbl_name HAVING col_name > 0;

Напишите это вместо этого:

SELECT col_name FROM tbl_name WHERE col_name > 0;

...
Тот Самый HAVING предложение может ссылаться на агрегатные функции, которые WHERE оговорка не может

Другие советы

Попробуйте использовать WHERE вместо HAVING.

Правильный способ сделать это — использовать предложение WHERE.

$query = "SELECT
zips.*
FROM
zips
WHERE
zips.city LIKE '%$city%' 
AND
zips.stateabbr LIKE '%$state%' 
LIMIT 1";

HAVING следует использовать при группировке, см. здесь для объяснения

о боже, извините, ребята, я понял проблему, видимо, я поставил пробел перед городом, когда называл столбцы в своей таблице.поэтому я переименовал столбец, и он работает, в любом случае, спасибо, ребята!но использование функцииwhere вместо этого должно значительно ускорить процесс, спасибо, ребята!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top