Есть ли проблемы в использовании одинаковых имен полей в разных таблицах, а затем сделать совместный запрос? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть несколько таблиц с одинаковыми именами и типами полей.Таблицы точно такие же, за исключением их имен: table1 и table2.Я буду SHOW CREATE TABLE table1:

CREATE TABLE `table_!` (
  `ip` varchar(500) NOT NULL,
  `description` varchar(500) DEFAULT NULL,
  `type` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`ip`),
  UNIQUE KEY `ip_UNIQUE` (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Я делаю совместные запросы, подобные этому (хотя объединенный синтаксис старый, но я использовал это во всем проекте, поэтому я не предпочитаю вносить изменения сейчас):

SELECT COUNT(`table2`.`ip`)
FROM `ips`.`table2`, `ips`.`table1`
WHERE `table2`.`ip` = `table1`.`ip`
       AND (LOWER(`table1`.`description`) NOT LIKE 'str1%' 
             AND (LOWER(`tabl1`.`description`) LIKE '%-str2-%' 
                   OR LOWER(`table1`.`description`) LIKE '%-str3-%'
                 )
            )
       AND (LOWER(`table2`.`description`) LIKE 'str1%'
            AND LOWER(`table2`.`description`) NOT LIKE '%-str2-%' 
            AND LOWER(`table2`.`description`) NOT LIKE '%-str3-%'
           );

Есть ли что-то неправильное или меры предосторожности, которые я должен принять в таком случае?

Я пока не вижу проблемы.За исключением того, что однажды я ошибочно назвал третье имя таблицы table3 в таком выражении FROM (также table3 похоже на table1 и table2).

FROM table1, table2, table3

Хотя я включил егов ОТ, но не использовал его, и не сделал совместных отношений.Только что присоединились table1 и table2.

Результаты, которые я получил, отличались от тех, которые были получены при удалении table3 из оператора FROM.

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете (и чаще всего будете иметь) одинаковые имена столбцов в разных таблицах.Вы должны использовать короткий псевдоним, чтобы сделать ссылки более понятными:

SELECT count(b.ip) 
FROM   ips.table1 a, ips.table2 b 
WHERE  a.ip = b.ip 
   --  ...

Когда вы добавите другую таблицу table3, результат будет другим, поскольку вы только что добавили другое измерение в набор данных.Вам также следует присоединиться к этой таблице в определенных столбцах, но, опять же, если не будет один к одному, вы вернете другое количество строк.

...