Доброе время суток,
Тут возникла такая ситуация:
Есть таблица Company:
CREATE TABLE IF NOT EXISTS `company` (
`company_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Есть таблица, которая проставляет соответствие между компаниями, типа: Компания 1 относится к компании 2 по таким-то критериям.
CREATE TABLE IF NOT EXISTS `company_relation` (
`company1_id` int(10) unsigned NOT NULL,
`company2_id` int(10) unsigned NOT NULL,
`mark` float(8,4) NOT NULL
KEY `company1_stock_correlation` (`company1_id`),
KEY `company2_stock_correlation` (`company2_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Соответственно мне нужно получить список всех компаний которые соотносятся к указанной мною компанией, но есть не большая особенность в заполнении данных, ниже приведен пример записей в таблице company_relation для трех компаний:
Как вы могли заметить, что записи где company1_id = 3 нет, потому что она ставиться в соответствие для других компаний выше.
Мое решение представлено ниже, но проблема в том, что соответствующие компании для нужной мне компании (company_id) могут быть в разных столбцах (company1_id или company2_id). Можно ли просто получить список соответствующих компаний в одном столбце? Иначе придется кучу проверок сверху накручивать.
select * from `company`
inner join `stock_correlation`
on `company`.`company_id` = `stock_correlation`.`company1_id`
or `company`.`company_id` = `stock_correlation`.`company2_id`
where `company_id` = ? #где company_id - уникальный идентификатор компании для которой мы ищем соответствия
P.S. В результате хотелось бы получить просто список компаний (идентификатор и название), которые соответствовали моей компании. Неужели придется 2-мя запросами делать?