具有 3 个表的 PIVOT 和没有数值的 JOIN

PIVOT with 3 tables and JOIN without number values

希望有人能帮助我或指出正确的方向。我更像是 sql 语言的初学者。

我有 3 table 个用户、dataTypes 和 usersData

**users**           **dataTypes**                **usersData**
id                  id                           id
dateCreated         name (varchar)               idUsers
                    description (varchar)        idDataTypes

我只设法在三个 table 上使用连接,如下所示:

select users.*, usersData.*, dataTypes.* from users left join (usersData inner join dataTypes on usersData.idDataTypes=dataTypes.id) on users.id=usersData.idUsers order by users.id asc, dataTypes.id asc

像这样获取每个用户的所有条目,然后重复多次相同的用户 ID:

**users.id**    **usersData.data**    **dataTypes.name**

但是我希望每种数据类型都显示为一列,并且每一行都包含所有输入的用户数据。 像这样:

**Name**   **Last Name**   **Address**
John       Smith           New York
Tom        NULL            NULL

在 Internet 上查看,pivot 用于将行值作为列,但 sql 代码表示聚合(总和、最小值、最大值)。不知道这是否是使用 pivot 的正确方法,或者我的 table 可能没有正确组织。

我怀疑您想要条件聚合来调整您的 EAV 模型。思路是:

select u.id, 
    max(case when dt.name = 'name'      then ud.data end) as name,
    max(case when dt.name = 'last name' then ud.data end) as name,
    max(case when dt.name = 'address'   then ud.data end) as address
from users u 
left join usersdata ud on u.id = ud.idusers
left join datatypes dt on ud.iddatatypes = dt.id
group by u.id