【问题标题】:Using inner join on two tables with foreign key that references primary id on main table在两个表上使用内连接,外键引用主表上的主 ID
【发布时间】:2013-12-06 17:31:21
【问题描述】:

假设我有以下表格:

品牌表

+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| ID        | varchar(20)  | NO   | PRI | NULL    |       |
| CarBrand  | varchar(100) | NO   |     | NULL    |       |
| FuelType  | varchar(100) | NO   |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

模型表

+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| ID         | int(2)       | NO   |     | NULL    |       |
| Model      | varchar(100) | NO   |     | NULL    |       |
| BrandID    | varchar(100) | NO   | MUL | NULL    |       |
| TopSpeed   | varchar(100) | NO   |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+

这里有一些条目

+----+----------------+-------------------------+
| ID | CarBrand       | FuelType                |
+----+----------------+-------------------------+
| 0  | Ford           | Gasoline                |
| 1  | Chevy          | Gasoline                |
| 2  | Peterbilt      | Diesel                  |
| 3  | GMC            | Gasoline                |
| 4  | OshKosh        | Natural Gas             |
+----+----------------+-------------------------+

+----+---------------+---------+------------+
| ID | Model         | BrandID | TopSpeed   |
+----+---------------+---------+------------+
|  1 | F150          | 0       | 130MPH     |
|  2 | 1500          | 1       | 110MPH     |
|  3 | 389           | 2       | 70MPH      |
|  4 | 1500          | 3       | 110MPH     |
|  5 | Mustang       | 0       | 170MPH     |
|  6 | Cement Truck  | 4       | 65MPH      |
+----+---------------+---------+------------+

Models 表中的 BrandID 列是 Brand 表主键 ID 列的外键。如果您无权访问任一列的值怎么办。我将如何编写一个 SQL 查询,使用 INNER JOIN 列出属于福特的所有模型

【问题讨论】:

  • you do not have access to the values of either of the columns 是什么意思?
  • “无权访问”列是什么意思?如果任何一列都不存在,则根本无法进行联接。
  • “如果您无法访问任一列的值怎么办?”是什么意思?
  • 它们都是未知值,基本上都是0
  • 汽车制造商会限制自己只使用一种燃料类型,这不是很奇怪吗!?!?!

标签: mysql sql


【解决方案1】:

没有访问ID,这意味着你只有我猜的型号名称.. 所以知道“福特”你可以得到这样的两个ID......

select * from modelsTable Mod inner join brandsTable Bra
on Mod.id= ( select id from Bra where CarBrand='FORD')   

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多