mysql - 在MySQL中一次从两个表中选择多行

标签 mysql select join

我有两个表:

products (id,title,price)
types (id,idProduct,type,additionalPrice).

我想制作一个列表,以最有效的方式显示所有产品及其后续类型,基本上是这样的:

Product1 (price1)
ProductType1 (+x USD)
ProductType2 (+y USD)

Product2 (price2)
ProductType3 (+w USD)
ProductType4 (+z USD)

etc

我能想到的一个解决方案是使用 GROUP_CONCAT 并在 PHP 中分解结果,但有些事情告诉我必须有更好的方法。

最佳答案

我建议查询以下值的记录集...

  • Products.ID
  • Products.Title
  • Products.Price
  • Types.Type
  • Types.AdditionalPrice

... 然后在您拥有数据后,只需使用 PHP 来处理格式设置。如果您按 Products.TitleTypes.Type 对结果进行排序,那么只需最少的 PHP 编码即可轻松获得所需的输出。

查询看起来像这样:

SELECT
  Products.ID
  Products.Title
  Products.Price
  Types.Type
  Types.AdditionalPrice
FROM Products
INNER JOIN Types ON Products.ID = Types.idProducts
ORDER BY Products.Title, Types.Type

您甚至可能不需要 Products.ID 值,尽管在前端提供 PK 通常很有用。无论如何,您可以从 SELECT 列表中省略它(但不是连接!)并且查询将没问题。

关于mysql - 在MySQL中一次从两个表中选择多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16610619/

相关文章:

MySQL 给每组一个排名

Python mysqlcursor.execute() 有问题吗?

MySQL 组合数据 + 计数(*) 查询 2 个表

Java 8 : how to 'JOIN' two Maps having the same Keys?

mysql - 使用内部连接更新两个表

sql - 由于 datediff 函数之间的日期问题

MySQL 查询 - 使用订单/计数更新字段,但根据另一个字段再次从 1 开始

php - 对于非常基本的 Markdown ,这些正则表达式可以工作吗?

php - 如果列有 2 个相同的记录,则选择最新记录

mysql - twitter 像关系数据库一样?