次の2つのテーブルがあります。
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;