php - 获取行数据作为列名称,如果存在则设置为布尔值

php - 获取行数据作为列名称,如果存在则设置为布尔值,第1张

我可以访问类似于此的数据库:

用户:

id  | name
====|========
1   | Tom
2   | Dick
3   | Harry
4   | Sally

exlusions:

user_id | exclusion
========|==============
1       | French only
3       | No magazine
4       | English only
1       | No magazine

是否可以查询数据库以获得这样的结果?

$users = [
    [
        'id'           => 1,
        'name'         => 'Tom',
        'english_only' => false, // unset or null would be okay
        'french_only'  => true,
        'no_magazine'  => true,
    ],
    // . . .
];

我一直在玩GROUP_CONCATPIVOT等其他示例,并且无法弄清楚它是如何应用的。

SQL Fiddle - 我想我可以修改this以符合我的情况。我没有那么远,你可以看到我不知道我在做什么......

最佳答案:

2 个答案:

答案 0 :(得分:2)

您可以在您的选择中使用IF根据其值从1中创建3列。

SELECT id, name,
IF(exclusion='English only',true,false) as english_only
IF(exclusion='French only',true,false) as french_only
IF(exclusion='No magazine',true,false) as no_magazine
FROM users, exclusions
WHERE users.id=exclusions.user_id

答案 1 :(得分:0)

我从@ RightClick' s answer开始,但不得不为我的SQL服务器稍微调整一下。

SELECT User.id, User.name,
    CASE WHEN Ex.exclusion = 'English Only' THEN 1 ELSE 0 END as english_only,
    CASE WHEN Ex.exclusion = 'French Only' THEN 1 ELSE 0 END as french_only,
    CASE WHEN Ex.exclusion = 'No magazine' THEN 1 ELSE 0 END as no_magazine
FROM users as User
LEFT JOIN exclusions Ex on User.id = Ex.user_id;

比我在谷歌搜索和搜索所有这一天之后想象的要简单得多......

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复