简体   繁体   English

链接查询错误代码1052

[英]Linking queries error code 1052

I am getting error code 1052 Column FireStationHome in field list is ambiguous when trying to equijoin two tables together in a query 当试图在查询中将两个表等价连接在一起时,我收到错误代码1052字段列表中的列FireStationHome不明确

This is the code I am using below: 这是我在下面使用的代码:

SELECT FiremanID, FiremanHomeStation,StationPhone
FROM FIRE_REPORT AS F, FIRE_STATION AS FS
WHERE F.FiremanHomeStation = FS.FiremanHomeStation
AND StationPhone ='703';

From reading through the forums I am understanding that I need to link the first relation by a linking key. 通过阅读论坛,我了解到我需要通过链接键来链接第一个关系。 FiremanHomeStation is the only linking key that I need to run the following directions. FiremanHomeStation是运行以下说明所需的唯一链接键。

Display FiremanID, FiremanHomeStation, and phone number of the station for all firefighters whose numbers begin with '703'. 显示所有以“ 703”开头的消防员的FiremanID,FiremanHomeStation和站的电话号码。

Using the Boyce Codd Method I have normalized the following 使用Boyce Codd方法,我将以下内容标准化

FIRE_REPORT(FireID,Alarms,Address,FiremanID,FiremanName,FiremanPhone,FiremanHomeStation,StationAddress,StationPhone,TruckID,LicensePlate)

The rules: 规则:

Each Fire can have several firefighters assigned to it 每个大火可以指派多名消防员
Each fire can have several fire trucks assigned to it 每个大火可以分配几辆消防车
Each firefighter can be assigned to several fires 每个消防员可以被分配到几次火灾
Each fire truck and be assigned to several fires 每辆消防车被分配到几场大火
Each Firefighter has a single home station 每位消防员都有一个家庭驻地
Each station is unique 每个站都是唯一的
Each station has a single phone number 每个电台都有一个电话号码

primary keys 主键

FireID, FiremanID, FiremanHomeStation,TruckID

FireID -> Alarms, Address
FiremanID -> FiremanName, FiremanPhone, FiremanHomeStation
FiremanHomeStation -> StationAddress, StationPhone
TruckID -> LicensePlate

FIRE_REPORT( FireID, FiremanID, FiremanHomeStation, TruckID ) FIRE_REPORT( FireID,FiremanID,FiremanHomeStation,TruckID
FIRE( FireID , Alarms, Address) 火警( FireID ,警报,地址)
FIREMAN_ID( FiremanID , FiremanName, FiremanPhone) FIREMAN_ID( FiremanID ,FiremanName,FiremanPhone)
FIRE_STATION( FiremanHomeStation , StationAddress, StationPhone) FIRE_STATION( FiremanHomeStationStationAddressStationPhone
TRUCK( TruckID , LicensePlate) 卡车( TruckID ,LicensePlate)

Referential integrity constraints 参照完整性约束
FireID in FIRE_REPORT must exist in FireID in FIRE FIRE_REPORT中的FireID必须存在于FIRE中的FireID中
FiremanID in FIRE_REPORT must exist in FiremanID in FIREMAN_ID FIRE_REPORT中的FiremanID必须存在于FIREMAN_ID中的FiremanID中
FiremanHomeStation in FIRE_REPORT must exist in FiremanHomeStation in FIRE_STATION FIRE_STPORT中的FiremanHomeStation必须存在于FIRE_STATION中的FiremanHomeStation中
TruckID in FIRE_REPORT must exist in TruckID in TRUCK FIRE_REPORT中的TruckID必须存在于TRUCK的TruckID中

create schema project_george;<br>
use project_george;<br>

CREATE TABLE FIRE   (<br>
    FireID int(3) NOT NULL,<br>
    Alarms int(1) NOT NULL,<br>
    Address varChar(25) NOT NULL,<br>
        CONSTRAINT FIRE_PK PRIMARY KEY(FireID),<br>
        CONSTRAINT FIRE_FR_FK FOREIGN KEY(FireID)<br>
        REFERENCES FIRE_REPORT(FireID)<br>
        ON UPDATE CASCADE<br>
);<br>
CREATE TABLE FIREMAN_ID (<br>
    FiremanID int(3) NOT NULL,<br>
    FiremanName varchar(25) NOT NULL,<br>
    FiremanPhone char(10) NOT NULL UNIQUE,<br>
        CONSTRAINT FI_PK PRIMARY KEY(FiremanID),<br>
        CONSTRAINT FI_FR_FK FOREIGN KEY(FiremanID)<br>
        REFERENCES FIRE_REPORT(FiremanID)<br>
        ON UPDATE CASCADE<br>
);<br>
CREATE TABLE FIRE_STATION   (<br>
    FiremanHomeStation varChar(25) NOT NULL UNIQUE,<br>
    StationAddress varChar(25) NOT NULL,<br>
    StationPhone char(10) NOT NULL,<br>
        CONSTRAINT FS_PK PRIMARY KEY(FiremanHomeStation),<br>
        CONSTRAINT FS_FR_FK FOREIGN KEY(FiremanHomeStation)<br>
        REFERENCES FIRE_REPORT(FiremanHomeStation)<br>
        ON UPDATE CASCADE<br>
);<br>
CREATE TABLE TRUCK  (<br>
    TruckID int(3) NOT NULL,<br>
    LicensePlate char(5) NOT NULL UNIQUE,<br>
            CONSTRAINT TRUCK_PK PRIMARY KEY(TruckID),<br>
            CONSTRAINT TRUCK_RC_FK FOREIGN KEY(TruckID)<br>
            REFERENCES FIRE_REPORT(TruckID)<br>
            ON UPDATE CASCADE<br>
);<br>

CREATE TABLE FIRE_REPORT    (<br>
    FireID  int(3)  NOT NULL,<br>
    FiremanID int(3) NOT NULL,<br>
    FiremanHomeStation varChar(25) NOT NULL,<br>
    TruckID int(3) NOT NULL,<br>
        CONSTRAINT FR_PK PRIMARY KEY(FireID,FiremanID,FiremanHomeStation,TruckID),<br>
        CONSTRAINT FR_F_FK FOREIGN KEY (FireID)<br>
        REFERENCES FIRE(FireID) <br>
            ON UPDATE CASCADE,<br>
        CONSTRAINT FR_FID_FK FOREIGN KEY(FiremanID)<br>
        REFERENCES FIREMAN_ID(FiremanID)<br>
            ON UPDATE CASCADE,<br>
        CONSTRAINT FR_FS_FK FOREIGN KEY(FiremanHomeStation)<br>
        REFERENCES FIRE_STATION(FiremanHomeStation)<br>
            ON UPDATE CASCADE,<br>
        CONSTRAINT FR_TRUCK_FK FOREIGN KEY(TruckID)<br>
        REFERENCES TRUCK(TruckID)<br>
            ON UPDATE CASCADE<br>
);<br><br>

INSERT INTO FIRE VALUES(100, 1, '4025 Medford dr, Annandale VA 22003');<br>
INSERT INTO FIRE VALUES(101, 2, '7031 Little River Turnpike Suite 5A
Annandale, VA 22003-5958');<br>
INSERT INTO FIRE VALUES(102, 3, '7001 Little River Turnpike, Annandale, VA 22003 ');<br>
INSERT INTO FIRE VALUES(103, 4, '8333 Little River Turnpike Annandale, VA 22003');<br>
INSERT INTO FIRE VALUES(104, 5, '1600 Pennsylvania Ave NW  Washington, DC 20500');<br><br>

INSERT INTO FIREMAN_ID VALUES(100, 'Guliza Ormuzokova', '703-221-9918');<br>
INSERT INTO FIREMAN_ID VALUES(101, 'Lex Steele', '703-911-4450');<br>
INSERT INTO FIREMAN_ID(FiremanID,FiremanName,FiremanPhone) VALUES(102, 'George Putnam', '703-222-9918');<br>
INSERT INTO FIREMAN_ID VALUES(103, 'Steven Drasner', '571-939-1234');<br>
INSERT INTO FIREMAN_ID VALUES(104, 'Judy Miller', '571-999-1234');<br>
INSERT INTO FIREMAN_ID VALUES(105, 'Lily Thai', '703-911-4451');<br><br>

INSERT INTO FIRE_STATION VALUES('Station 29', '571 Broad st
Fairfax VA 22030', '703-200-9918');<br>
INSERT INTO FIRE_STATION VALUES('Station 229', '8914 Little River Turnpike, Fairfax, VA 22031 ', '703-900-4450');<br>
INSERT INTO FIRE_STATION VALUES('Station 429', '3988 University Dr, Fairfax, VA 22030 ', '571-900-1234');<br><br>

INSERT INTO TRUCK VALUES(1, 'burn29');<br>
INSERT INTO TRUCK VALUES(2, 'burn19');<br>
INSERT INTO TRUCK VALUES(3, 'burn09');<br><br>

/************I can't figure this on out!!!*** *****/<br>
SELECT FiremanID, FiremanHomeStation,StationPhone<br>
FROM FIRE_REPORT AS F, FIRE_STATION AS FS<br>
WHERE F.FiremanHomeStation = FS.FiremanHomeStation<br>
AND StationPhone ='703';<br>

FiremanHomeStation is existing in both table but you don't specify from which table you want the result, which is ambiguous. 两个表中都存在FiremanHomeStation,但是您没有指定要从哪个表中获得结果,这是不明确的。

SELECT FiremanID, FS.FiremanHomeStation,StationPhone
FROM FIRE_REPORT AS F, FIRE_STATION AS FS
WHERE F.FiremanHomeStation = FS.FiremanHomeStation
AND StationPhone ='703';

Should work 应该管用

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM