У меня есть следующие две таблицы:
system
- id
- systemName
- idOrganization
organization
- id
- officeSymbol
Я выполняю следующий запрос и получаю id
с неоднозначной ошибкой:
SELECT system.systemName, organization.officeSymbol
FROM system
LEFT JOIN (organization)
ON (system.idOrganization = organization.id)
Как видите, я не выбираю столбец id
. Если я помещу system.id
в список полей для выбора, я больше не получаю эту ошибку. К сожалению, способом обработки этих данных я не могу вернуть id
- мы не хотим, чтобы он отображался пользователю.
Кроме того, если я добавлю GROUP BY system.systemName
, я больше не получаю ошибку - но это просто не кажется оптимальным решением.
Примечание: LEFT JOIN
является преднамеренным, поскольку не все системы будут назначены Организации.
SELECT VERSION()
--> 5.0.77-community-log
CREATE TABLE system (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`systemName` VARCHAR(45) DEFAULT NULL,
`idOrganization` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_system_organization` (`idOrganization`),
CONSTRAINT `fk_system_organization`
FOREIGN KEY (`idOrganization`)
REFERENCES `organization` (`id`)
ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE organization (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`officeSymbol` VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;