我有两个表:
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.Title
和 Types.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/