【问题标题】:How to filter a table in SQL by a foreign key?如何通过外键过滤SQL中的表?
【发布时间】:2014-12-30 10:23:31
【问题描述】:

我正在创建一个可以注册自行车维修的网站。它有效,但现在我正在微调。我有一个 MySQL 数据库,其中有一个名为“Reparation”、“Customer”和“bike”的表

在自行车中,有一个带有型号、品牌等的唯一 ID。在客户中,有客户ID、客户名称、地址等。在修复中,我可以选择一个客户和一辆自行车,所以它们是相关的,这也很好:)。

当我选择一位客户进行维修时,我只想查看他的自行车。因此,当客户有两辆自行车时,我想选择客户并仅查看两辆自行车(或其中的唯一 ID)。

现在我选择一个客户,我看到所有客户的所有自行车。如何在 phpMyAdmin 或 PHP 中执行此操作?两者都很好,但如果可能的话更好的 phpMyAdmin..

【问题讨论】:

  • Aaa你尝试了什么?你的代码在哪里?向我们展示一些工作!
  • 带有INNER JOIN
  • 向我们展示表格的结构以帮助您更好
  • 请记住,您拥有的是 MySQL 数据库,而不是 phpMyAdmin 数据库。您的数据存储在 MySQL 中,而 phpMyAdmin 只是一种用户友好的访问方式。

标签: php mysql sql phpmyadmin


【解决方案1】:

由于一位客户可以拥有多辆自行车,而一辆自行车属于一位客户,您应该将 CustomerID 存储在您的自行车表中 (1-to-many relationship)。

Bike                                     Customer
  + bikeID                                 + customerID
  + bikeBrand                              + customerAddress
  ...                                      ...
  + customerID                             

然后,选择属于 ID 为 X 的客户的所有自行车:

SELECT bikeID FROM Bike WHERE customerID = X;

【讨论】:

  • 是的,这行得通。我希望我可以在 PHPMyAdmin 中单击并播放,但这是一个我可以在 PHP 中执行的 SQL 查询。现在我想将输出放入我网站上的下拉列表中。谢谢!!
【解决方案2】:

由于您没有提供表结构,我们只能举个例子:

所以你可以试试这样的:

SELECT * FROM Reparation WHERE customer_id = selected_customer_id;

【讨论】:

  • 它只选择客户。您需要将其与ReparationBike 表一起加入。
猜你喜欢
  • 2019-06-18
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 2014-04-13
  • 2019-07-23
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多