php - 根据第一个表的内容连接表

标签 php mysql sql

我正在尝试提出一个查询,其中第三个表将连接另外两个表。问题是第一个表有不同的版本,我需要查询查看表 1 中的列,然后选择要连接的正确表,但结果查询必须返回表 1 中的所有行,只需将额外的表 3 连接到满足 WHERe 子句的特定行。 这可能吗?

示例:

表 1 = 用户

表 2 = 横幅

表 3 = UserSettings 或 AdminSettings 或无

查询会说...

WHERE User.rank='admin' LEFT JOIN AdminSettings

WHERE User.rank='user' LEFT JOIN UserSettings

我当前的查询是这样的:

$query = "SELECT * FROM Users as U WHERE U.user_id = :id ";
$query .= "LEFT JOIN Banners as B ON U.banner_id = B.banner_id ";
$query .= "LEFT JOIN AdminSettings ON U.server_id = AdminSettings.user_id WHERE U.rank='Admin' ";
$query .= "LIMIT 1";

问题是它只显示 User.rank='admin' 的行,而不显示 User.rank='user' 其余的行。

最佳答案

连接table3两次并在select语句中使用CASE

SELECT  a.*,
        b.*
        CASE WHEN a.rank = 'admin' 
            THEN c.user_ID                     -- gets value from AdminSettings
            ELSE d.user_ID                     -- gets value from UserSettings
        END as ColName1,
        CASE WHEN a.rank = 'admin' 
            THEN c.colName                     -- gets value from AdminSettings
            ELSE d.colName                     -- gets value from UserSettings
        END as ColName2
FROM    users a
        INNER JOIN banners b
            ON a.banner_id = b.banner_id
        LEFT JOIN  AdminSettings c
            ON a.server_ID = c.user_ID
        LEFT JOIN UserSettings d
            ON a.server_ID = d.user_ID

关于php - 根据第一个表的内容连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169810/

相关文章:

php - 在 PDO 中将 1 行连接到多行

php - MySql 查询同一张表的贷方和借方

javascript - clipboardjs 在用空格分配类时不起作用

php - mysql卡在内部连接查询

Python/MySQL - 加载数据本地INFILE

php - 消息: Trying to get property of non-object mvc framework Codeigniter

php - mysql如果条件满足则执行join否则不

javascript - 使用 PHP 提供 Javascript : Return/Echo URL/URI

php - fatal error : Call to a member function find() on a non-object?

mysql - 如何检查MySQL缓存生命周期?