【问题标题】:Having extra columns in join between 3 tables MySQL在 3 个表 MySQL 之间加入额外的列
【发布时间】:2022-07-01 00:38:54
【问题描述】:

我有 3 个表:Car、Client 和 Car_client,后者是 car 和 client 之间的联结表,因为正如我所说 Car_Client 是一个联结表,这意味着 car 和 client 之间的关系是多对多的。表的结构如下:

_____________________    ___________________     ______________________
|       Car         |    |     Client      |     |  Car_Client        |
|___________________|    |_________________|     |____________________|  
| license_plate (PK)|    |  Name           |     | license_plate(fk)  |
|     Model         |    |  Surname        |     |  Id_Code(fk)       |
|___________________|    |  Id_Code (PK)   |     |____________________|
                         |  Phone          |
                         |_________________|

现在,我要实现的目标是允许用户按名称研究客户。搜索名称时,我想显示有关他拥有的汽车的所有信息以及他的个人信息。所以基本上就像 select * from Car, Client 但只是为了一个特定的名称。为了实现这一点,我尝试了不同的方法,效果最好的一种,虽然不完美的是这个:

SELECT * FROM
  Car_Client car_cli
  INNER JOIN Car ON ( car_cli.license_plate = car.license_plate)
  INNER JOIN Client ON ( car_cli.Id_Code = Client.Id_Code)
WHERE
  Car_Client.Id_Code in (SELECT Id_Code FROM Client WHERE Name = 'emanuele');

这个解决方案的问题是我有两个额外的 license_plate 和 Id_Code 列

【问题讨论】:

  • 那么select后不要使用*,而是单独指定所有字段。 (最好只指定您实际需要的字段。)
  • 不要使用SELECT *。指定您想要的列。不,没有* except car_cli.Id_Code

标签: mysql sql join


【解决方案1】:

选择客户。,汽车。 FROM Car_Client car_cli INNER JOIN Car ON ( car_cli.license_plate = car.license_plate) 内部加入客户端(car_cli.Id_Code = Client.Id_Code) 在哪里 Car_Client.Id_Code in (SELECT Id_Code FROM Client WHERE Name = 'emanuele');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2014-07-19
    相关资源
    最近更新 更多