mysql - 如何从同一个mysql表中选择列两次?

标签 mysql sql

我最近为 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)
);

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

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

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

谢谢 干杯 科里

最佳答案

您只需要使用不同的别名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

关于mysql - 如何从同一个mysql表中选择列两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23647024/

相关文章:

mysql - 数据库设计: split column with multiple data types

mysql - 使用方法对用户 '' 进行主机 'root' 的身份验证

sql - 如何过滤偶数和奇数并将它们移动/复制到空列?

sql - 如何在表上进行双重比较

sql - 如何从 DB2 中的列中获取表名?

mysql - 间隔日期之间的查询

php - laravel中如何删除多个id?

MySQL查询将输出作为CSV打印到标准输出

mysql - 带数量单位转换的group-by查询sql怎么写?

SQL主键: integer vs varchar