【问题标题】:How to select column twice from the same mysql table?如何从同一个mysql表中选择列两次?
【发布时间】:2014-05-14 06:20:21
【问题描述】:

我最近为 uni 做了很多 MySql,但我似乎无法弄清楚如何在同一个语句中两次从表中获取字段。 我的数据库是这样的:

drop database if exists AIRLINE;
create database AIRLINE;
use AIRLINE;



CREATE TABLE AIRCRAFT
(
    AircraftNo INT(20) NOT NULL,
    AircraftType VARCHAR(100) NOT NULL, 
    FuelBurn VARCHAR(100) NOT NULL, 
    Airspeed VARCHAR(100) NULL, 
    LastInspection DATE NULL, 
    TotalFlyingTime INT(50) NOT NULL, 
    TotalTimeLeftEngine INT(50) NULL, 
    TotalTimeRightEngine INT(50) NULL,

    PRIMARY KEY (AircraftNo)
);

CREATE TABLE PILOT
(
    PilotCode INT(20) NOT NULL, 
    LastName VARCHAR(100) NOT NULL, 
    FirstName VARCHAR(100) NOT NULL, 
    MiddleInitial VARCHAR(50) NULL, 
    HiredDate DATE NULL, 
    BasePay VARCHAR(50) NULL, 
    Dependents VARCHAR(100) NULL, 
    License INT(50) NOT NULL,
    TotalHours INT(50) NOT NULL,

    PRIMARY KEY (PilotCode)
);

CREATE TABLE CUSTOMER
(
    CustomerNo INT(20) NOT NULL,
    Name VARCHAR(100) NOT NULL, 
    Contact INT(50) NOT NULL, 
    Phone INT(50) NOT NULL, 
    Street VARCHAR(100) NULL, 
    Suburb VARCHAR(100) NULL, 
    State VARCHAR(100) NULL, 
    Postcode INT(20) NULL, 
    Balance INT(50) NULL,

    PRIMARY KEY (CustomerNo)

);

CREATE TABLE CHARTER
(
    TripTicket INT(50) NOT NULL AUTO_INCREMENT, 
    CharterDate DATE NOT NULL, 
    PilotCode INT(20) NOT NULL, 
    CopilotCode INT(20) NULL, 
    AircraftNo INT(20) NOT NULL, 
    Destination VARCHAR(100) NOT NULL, 
    Distance INT(20) NULL, 
    HoursFlow INT(20) NULL, 
    HoursWating INT(20) NULL, 
    Fuel INT(20) NULL, 
    Oil INT(20) NULL, 
    CustomerNo INT(20) NOT NULL,

    PRIMARY KEY (TripTicket),

    FOREIGN KEY(PilotCode) REFERENCES PILOT(PilotCode),
    FOREIGN KEY(CopilotCode) REFERENCES PILOT(PilotCode),
    FOREIGN KEY(AircraftNo) REFERENCES AIRCRAFT(AircraftNo),
    FOREIGN KEY(CustomerNo) REFERENCES CUSTOMER(CustomerNo)
);

我的目标是列出所有包机的包机日期、目的地、客户详细信息(姓名、客户编号、地址、电话)和飞行员姓名(名字、中间名、姓氏)。 我设法得到了一切,但只有一名飞行员。不过,我需要列出两个飞行员的姓名。

我用谷歌搜索了我的问题,但我似乎找不到任何东西。

如果有人能指出正确的方向,我将不胜感激。

谢谢 干杯 科里

【问题讨论】:

标签: mysql sql


【解决方案1】:

别名为

 SELECT a.columname1 AS 1, a.columname1 AS 2
   FROM tablename a

【讨论】:

    【解决方案2】:

    你只需要用不同的别名JOIN该表两次。

    类似:

    SELECT p1.lastname, p2.lastname, /* other fields */
      FROM CHARTER c
      JOIN PILOT p1 ON p1.PilotCode = c.PilotCode
      JOIN PILOT p2 on p2.PilotCode = c.CoPilotCode
    

    【讨论】:

    • 嗨,非常感谢您的帮助,这太完美了。这让我难过了好几天。再次感谢科里
    • 我们在这里互相帮助! ;-)
    【解决方案3】:

    您必须在联接中使用表别名:

    SELECT MainPilot.LastName, CoPilot.LastName FROM CHARTER 
    LEFT JOIN PILOT MainPilot ON MainPilot.PilotCode=CHARTER.PilotCode
    LEFT JOIN PILOT CoPilot ON CoPilot.PilotCode=CHARTER.CoPilotCode
    

    【讨论】:

    • 这是完美的,谢谢,Corey
    【解决方案4】:

    您需要在查询中加入试验表两次。为此,您必须为您加入的每个 Pilot 表使用别名。

    【讨论】:

      【解决方案5】:

      您可以简单地多次使用同一列并为每个列添加 as 并使用不同的名称

      SELECT column1 as c1, column1 as c2, column1 as c3 FROM TABLE1 WHERE ....
      

      【讨论】:

        猜你喜欢
        • 2014-01-28
        • 2023-04-08
        • 2014-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-02
        相关资源
        最近更新 更多