MYSQL - запрос для проверки по другой таблице (трудно объяснить ...) - PullRequest
0 голосов
/ 12 марта 2010

У меня есть запрос, который получает список электронных писем, которые подписались на пробную рассылку, которая длится 30 дней.

$thirty = time() - 3024000;

SELECT c.email 
  FROM tbl_clients AS c 
  JOIN tbl_clientoptions AS o ON o.client = c.id 
 WHERE o.option = 'newsletter' 
   AND c.datecreated > $thirty

Что я хочу сделать, это выполнить проверку в том же запросе, чтобы он также возвращал клиентам старше 30 дней, если у них есть tbl_clientoptions.option = 'trialoverride' (т.е. строка в таблице опций клиента со значением " trialoverride ")

TBL_CLIENTS таблица:

  • ID
  • имя
  • Адрес электронной почты
  • datecreated

TBL_CLIENTOPTIONS таблица:

  • ID
  • клиент
  • опция

Ответы [ 2 ]

0 голосов
/ 12 марта 2010

Обычно это выполняется только условием OR, добавляется DISTINCT, если один и тот же пользователь может иметь оба условия, в противном случае удалите его:

SELECT DISTINCT c.email 
FROM tbl_clients c 
 INNER JOIN tbl_clientoptions o ON (o.client = c.id) 
WHERE
 (o.option = 'newsletter' AND c.datecreated < $thirty) OR
 (o.option = 'trial override' AND c.datecreated > $thirty);
0 голосов
/ 12 марта 2010

Как насчет:

SELECT c.email 
   FROM tbl_clients AS c JOIN tbl_clientoptions AS o
   ON o.client = c.id 
   WHERE (o.option = 'newsletter' AND c.datecreated > $thirty) 
     || o.option = 'trialoverride';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...