ОК; это часами жарило мой мозг. Я думаю, мне может понадобиться дополнительный запрос, но я не настолько продвинутый в таких вещах, поэтому любая помощь или указатели в правильном направлении были бы весьма признательны.
Вот запрос, который у меня есть ….
$query = "SELECT * FROM events WHERE event_type = 'Christmas Listings' AND event_active='Yes' ORDER BY event_date ASC LIMIT 5"; $result= mysql_query($query);
Хорошо … теперь для простого английского бита о том, чего я хочу достичь (чтобы понять, чего я пытаюсь достичь):
Я хочу проверить тип события (« event_type
») – это то, что я получаю (например, Рождественские листинги), поскольку в этом столбце есть несколько типов.
Я хочу проверить, что событие активно (« event_active
») – «Да» (данные в этом поле «Да / Нет»).
Я хочу заказать их с помощью (' event_date
') ASC (данные в этом поле – yyyy-mm-dd
), поэтому они показывают последнюю запись по дате из БД.
Я хочу LIMIT (или каким-то образом контролировать вывод), чтобы результаты отображали только 5 результатов при выполнении такого типа запроса с помощью инструкции WHILE.
Хорошо, все работает, НО; когда я добираюсь до фактического отображения вывода, у меня есть шаткий вывод о том, сколько результатов на самом деле отображается … Что происходит, если у меня есть несколько отключенных событий, так как в event_active
is ' Off
', то это почти похоже на аргумент подсчитывается из всех результатов (включая event_active='Off'
) и, следовательно, не показывает, как я ожидаю их отображения?
Надеюсь, это имеет смысл … Любая помощь будет с благодарностью воспринята.
SELECT * FROM events WHERE event_type = 'Christmas Listings' AND event_active='Yes' ORDER BY event_date LIMIT 0, 5
поэтому ваше заявление легче читать.
Я действительно не уверен, что вы просите, но LIMIT
работает следующим образом:
LIMIT
означает, что после завершения запроса и выполнения всех WHERE
возвращаются только первые 5.
Результаты ALl, где event_active
не является «Да», не будут отображаться и не будут учитываться во всем.
Этот результат будет таким же, как результат, когда вы будете делать запрос без ограничения, и просто посмотрите на первые 5 строк.
Этот запрос должен быть точным. Я бы проверил ваш набор данных (или даже лучше, опубликуйте его!). Возможно, вы захотите также изучить нормализацию базы данных. Это поможет вам в будущем.
Проблема, я думаю, связана с вашим «event_active».
MySQL использует 0 и 1, чтобы указать, является ли поле истинным / ложным, да / нет, вкл / выкл. Попробуйте использовать 0 и 1 в инструкции SELECT, если поле типа в этом поле не является VARCHAR, и вы фактически используете эти слова.