mysql - 是否可以创建 mysql 查询(考虑外来列按列排序)

标签 mysql propel

例如我有 2 个表:

product:
id: integer
price: integer

variation:
id: integer
product_id: integer
price integer

有些产品有变体,有些产品没有变体。 我想要获取所有产品,按价格排序。如果产品有变体,则该产品必须按第一个变体价格排序,而不是其本身的价格。

是否可以制定这样的 Propel Criteria 或 Query ?

最佳答案

SELECT
*
FROM
product p
LEFT JOIN variation v ON p.id = v.product_id
ORDER BY COALESCE(v.price, p.price)

COALESCE() 返回其第一个参数,该参数不是 NULL。 LEFT JOIN 返回产品表中的所有内容,如果变体表中没有匹配项,则为 NULL

关于mysql - 是否可以创建 mysql 查询(考虑外来列按列排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19090294/

相关文章:

php - 这个 PHP 类是否针对 mysql 数据库访问进行了优化?

PHP Mysql - 生成带有子类别循环的类别

php - Symfony2、Doctrine2、不同数据库之间的关系

php - 如何使用 3 个或更多表执行 Propel 查询?

php - 如何使用 Propel 2 ORM 在一个查询中将多行插入数据库?

php - 如何使用 Propel ORM 中的 SQL "replace"函数?

mysql - 将从日期时间列中提取的时间与 MariaDB 和 MySQL 中的静态时间进行比较

mysql - 将 MySQL 连接/服务器设置为 utf8mb4 而不是 uft8 会破坏 SQLYog 中的存储过程

php - 防止 Propel 插入空字符串

php - 获取结果集列名