Правильный синтаксис MYSQL для сравнения временных меток и отличных результатов с некоторыми исключениями

Извините за вопрос, но мне никогда не приходилось делать такой сложный запрос 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.

Заранее спасибо за любую помощь или направление.

0

Решение

Весь ваш WHERE это неверно. Запрос может иметь только ОДИН where пункт. Вы присоединяетесь к нескольким условиям с and а также orне and where:

WHERE foo AND bar  // correct
WHERE foo AND WHERE bar // syntax error
3

Другие решения

Проверьте MySQL Функции даты и времени. Например, я не совсем уверен, что пытается выполнить последнее предложение WHERE, но я считаю, что первая часть может быть переписана примерно так:

SELECT *
FROM patientlist
WHERE `date` - interval `weekspreg` week
between now() - interval 29 week
and now() - interval 30 week
0

По вопросам рекламы [email protected]