Извините за вопрос, но мне никогда не приходилось делать такой сложный запрос MYSQL, и я на самом деле не знаю, что искать в Google, чтобы получить ответ.
У меня есть плохо составленная база данных с таблицей встреч беременных женщин, которая включает день, когда они пришли, и количество недель беременности, в течение которых они были в то время. Я пытаюсь выбрать каждый, который должен быть 30 недель прямо сейчас, но это не имеет отдельную запись после 25 недель беременности. Я использую номер телефона, чтобы уникально идентифицировать каждого человека.
Поскольку я действительно не знаю, как сформулировать этот запрос, это лучшее, что я придумал.
SELECT * FROM patientlist WHERE
UNIX_TIMESTAMP() - (UNIX_TIMESTAMP(`date`) - `weekspreg`*604800) > 29*604800
AND
UNIX_TIMESTAMP() - (UNIX_TIMESTAMP(`date`)- `weekspreg`*604800) <= 30*604800
AND
/* a subquery that keeps out results where the phone number would show up elsewhere in the table for a woman with more than 25 weeks of pregnancy. */
Должно быть лучшее решение, чем запросить каждый из результатов из диапазона дат по номеру телефона по отдельности, чтобы узнать, больше ли значение weekpreg больше 25.
Заранее спасибо за любую помощь или направление.
Весь ваш WHERE
это неверно. Запрос может иметь только ОДИН where
пункт. Вы присоединяетесь к нескольким условиям с and
а также or
не and where
:
WHERE foo AND bar // correct
WHERE foo AND WHERE bar // syntax error
Проверьте MySQL Функции даты и времени. Например, я не совсем уверен, что пытается выполнить последнее предложение WHERE, но я считаю, что первая часть может быть переписана примерно так:
SELECT *
FROM patientlist
WHERE `date` - interval `weekspreg` week
between now() - interval 29 week
and now() - interval 30 week