php - MySQL IF 语句?

标签 php mysql

我有一个巨大的 sql 查询,我在其中选择并格式化一堆行以导出到 Excel。我想再添加一个角色,几乎如果 rid (role id) EXISTS 和 IS 3 然后将其设置为角色 1,否则将其设置为角色 2。

当前Mysql查询

SELECT uc_orders.billing_first_name AS 'First Name', uc_orders.billing_last_name AS 'Last 
Name', users.name AS 'Username', uc_orders.billing_street1 AS 'Address', 
uc_orders.billing_city AS 'City', uc_zones.zone_name AS 'State',uc_orders.billing_postal_code
 AS 'Postal Code', ROUND(uc_orders.order_total,2) AS 'Order Total'  FROM uc_orders, users,
 uc_zones WHERE uc_orders.uid!='0' AND uc_orders.uid = users.uid AND uc_orders.billing_zone =
 uc_zones.zone_id AND uc_orders.modified BETWEEN '1271124575' AND '1274978899'

但是用户不会一直存在于 users_role 数据库中(只有当它是 3 或其他数字时它才会存在,通常它不会存在)。因此,如果它不存在,它也会返回“角色 2”;

所以

  IF users.uid EXISTS IN users_role.uid THEN
    IF users_role.uid EQUALS users.uid AND users_role.rid = 3
      THEN
        return 'Role 1'
      ELSE
        return 'Role 2';
  ELSE return 'Role 2';

我如何在 MySQL 中执行此操作?或者 PHP 是唯一的方法吗?

最佳答案

您应该使用 JOIN 进行多表查询。还可以考虑格式化您的查询并使用别名以便于阅读。

SELECT
    `a`.`billing_first_name` as `First Name`,
    `a`.`billing_last_name` as `Last Name`,
    `b`.`name` as `Username`,
    `a`.`billing_street1` as `Address`,
    `a`.`billing_city` as `City`,
    `c`.`zone_name` as `State`,
    `a`.`billing_postal_code` as `Postal Code`,
    ROUND(`a`.`order_total`,2) as `Order Total`,
    IF(`d`.`rid` IS NOT NULL AND `d`.`rid`=3,'Role 1','Role 2') as `Role`
FROM `us_orders` as `a`
JOIN `users` as `b` ON `a`.`uid`=`b`.`uid`
JOIN `uc_zones` as `c` ON `a`.`billing_zone`=`c`.`zone_id`
LEFT JOIN `users_role` as `d` on `a`.`uid`=`d`.`uid`
WHERE `a`.`modified` BETWEEN '1271124575' AND '1274978899'

回答您实际问题的部分是带有 IF 的行和带有 LEFT JOIN 的行。

关于php - MySQL IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9436073/

相关文章:

php - 显示多个词的搜索结果

php - 在标记上单击关闭信息气泡

带有匿名连接的 PHP mysqli 准备语句

php - 解析错误: syntax error, unexpected '}' [closed]

php - "Proper"如何在PHP 网站应用程序中设置环境变量?

php - 通过postgresql递归列出所有元素

java - 创建文件名时,单引号在java中自动被两个单引号替换

php - 使用whereHas Eloquent 关系查询

mysql - SQL - SELECT with WHERE 语句返回 false,尽管表中存在字段

php - 使用 2 个文本字段将多个图像上传到数据库