【发布时间】:2010-06-17 00:30:47
【问题描述】:
我有如下表格:
'profile_values'
userID | fid | value
-------+---------+-------
1 | 3 | joe@gmail.com
1 | 45 | 203-234-2345
3 | 3 | jane@gmail.com
1 | 45 | 123-456-7890
还有:
'users'
userID | name
-------+-------
1 | joe
2 | jane
3 | jake
我想加入他们,并在一行中包含两个值,例如:
'profile_values'
userID | name | email | phone
-------+-------+----------------+--------------
1 | joe | joe@gmail.com | 203-234-2345
2 | jane | jane@gmail.com | 123-456-7890
我已经解决了,但感觉很笨拙,我想知道是否有更好的方法来做到这一点。意味着更易读或更快(优化)或只是最佳实践的解决方案。
当前解决方案:选择多个表,多个条件语句:
SELECT u.userID AS memberid,
u.name AS first_name,
pv1.value AS fname,
pv2.value as lname
FROM users AS u,
profile_values AS pv1,
profile_values AS pv2,
WHERE u.userID = pv1.userID
AND pv1.fid = 3
AND u.userID = pv2.userID
AND pv2.fid = 45;
感谢您的帮助!
【问题讨论】:
-
第一个表的最后2行第一列应该有2吗?
-
我只想合并一个用户表,该表在一行中包含与该用户相关的更多值。但是那些其他值存在于一个表的多行中。因此,将其与一行中的值组合到一个表中。 Drupal 模块用户配置文件在添加扩展用户配置文件值的功能时以这种方式工作。