SQL JOIN ON имя таблицы, равное значению поля - PullRequest
0 голосов
/ 13 марта 2012

Я ищу запрос mysql (использующий php), чтобы пройти каждую таблицу по одному и отображать только те результаты, которые не соответствуют дате ключа в таблице t_lastmod.Я не уверен, как сказать ON tablename = значение поля.

t_one

guid | name | lastmod
 1   |  Joe | 2012-01-01 01:00:00
 2   |  Tom | 2012-01-02 01:00:00
 3   |  Sue | 2012-03-01 02:00:00

t_two

guid | pet  | lastmod
 4   | cat  | 2012-01-01 01:00:00
 5   | dog  | 2012-01-02 01:00:00
 6   | fish | 2012-03-01 02:00:00

t_three

guid | fruit   | lastmod
 7   |  orange | 2012-01-01 01:00:00
 8   |  pear   | 2012-01-02 01:00:00
 9   |  grape  | 2012-03-01 02:00:00

t_lastmod

table_name | lastmod
   t_one   |  2012-01-01 01:00:00
   t_two   |  2012-01-02 01:00:00
   t_three |  2012-01-01 02:00:00

Результаты запроса будут такими:

t_one => 2 | Tom   | 2012-01-02 01:00:00
t_one => 3 | Sue   | 2012-03-01 02:00:00
t_two => 4 | cat   | 2012-01-01 01:00:00
t_two => 6 | fish  | 2012-03-01 02:00:00
t_three => 8 | pear | 2012-01-02 01:00:00
t_three => 9 | grape | 2012-03-01 02:00:00

Пока мой код (нужна помощь в JOIN t_lastmod ON ...)

$tables = array('t_one', 't_two', 't_three');

  foreach ($tables AS $table) {

    $query = " select $table.* from $table JOIN t_lastmod ON $table = t_lastmod.TABLE_NAME WHERE $table.lastmod != t_lastmod.lastmod ";

  }

1 Ответ

1 голос
/ 13 марта 2012
select $table.* 
from $table 
JOIN t_lastmod ON '$table' = t_lastmod.TABLE_NAME 
WHERE $table.lastmod != t_lastmod.lastmod "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...