我有这样的表:一个表,需要多个值从不同的行/元组
'profile_values'
userID | fid | value
-------+---------+-------
1 | 3 | [email protected]
1 | 45 | 203-234-2345
3 | 3 | [email protected]
1 | 45 | 123-456-7890
和:
'users'
userID | name
-------+-------
1 | joe
2 | jane
3 | jake
我想加入他们的行列,并有一排有两个值的样:
'profile_values'
userID | name | email | phone
-------+-------+----------------+--------------
1 | joe | [email protected] | 203-234-2345
2 | jane | [email protected] | 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个吗? – potatopeelings 2010-06-17 03:31:47
我只想组合一个用户表,该用户表在一行中有许多属于该用户的更多值。但是其他值在一个表中存在多行。所以把它与一行中的值结合成一个表格。当Drupal模块用户配置文件添加扩展用户配置文件值的功能时,它就以这种方式工作。 – JeroenEijkhof 2010-06-17 17:19:21