MySQL 查询中的外键

Foreign key in MySQL query

有人可以帮助我了解如何在 MySQL 查询中使用外键吗? 假设我有 2 tables

table VinDatabase
+-------+----------+------------+
| case_id| car_model|    vin    |
+-------+----------+------------+
|  1     |    VW    |  ABCDEFG  |
+-------+----------+------------+
|  2     |    VW    |  GFEDCBA  |     
+-------+----------+------------+
table cases
+-------+----------+------------+
|case_id|   date   |    price   |
+-------+----------+------------+
|   1   |08.04.2015|    11000   |
+-------+----------+------------+
|   2   |02.03.2015|     7000   |
+-------+----------+------------+

使用 INDEX:VinDatabase 中的 VIN table 和 case_id table

因为在我的网站上,用户总是仅通过 VIN 号码进行搜索,例如,如何查询才能到达 DATE?

现在我的查询如下所示:

SELECT * FROM VinDatabase WHERE vin = :vin

从那里得到 case_id 然后进行新查询:

SELECT * FROM cases WHERE case_id = :case_id

有什么更好的方法吗? 另外,如果 VIN / case_id 不是唯一的,查询会是什么样子?

编辑: 它是如何从过程站点工作的:

  1. 用户进入页面并将 VIN 添加到输入中(比方说 ABCDEFG)
  2. 服务器获取 VIN 并需要在 VINDatabase table
  3. 中找到 case_id
  4. 使用 case_id 搜索案例 table。
  5. VinDatabase 和案例的输出table

你可以像这样在两个表上做一个JOIN

SELECT * FROM vinDatabase v INNER JOIN cases c
ON v.case_id = c.case_id
WHERE v.vin = 'ABCDEFG' AND c.case_id = 1

输出:

+--------+----------+------------+----------+------------+
| case_id| car_model|    vin     |   date   |    price   |
+--------+----------+------------+----------+------------+
|   1    |    VW    |  ABCDEFG   |08.04.2015|    11000   |
+--------+----------+------------+----------+------------+

更新:

如果对于一个给定的 VIN 号码存在多个记录,您将不得不修改查询以返回单个结果。要获取给定 VIN 编号的最新单个条目(可能有多个案例),您可以使用:

SELECT * FROM vinDatabase v INNER JOIN cases c
ON v.case_id = c.case_id
WHERE v.vin = 'ABCDEFG'
ORDER BY c.date DESC
LIMIT 1;