我敢肯定这已经被询问/回答了,但是我不知道这种动作是如何被调用的,并且我的SQL知识是有限的。
我正在搜索一个SQL语句来合并两个表:
表USER:
ID hash ========= 1 abc 2 def 3 ghi
和USER_FIELD表:
ID user_id key value ============================= 1 1 firstname John 2 1 lastname Doe 3 2 firstname Justin 4 2 lastname Case
现在,我想知道我如何获得这种观点:
ID hash firstname lastname ================================ 1 abc John Doe
因此,如果我使用键“ email”在USER_FIELD表中添加其他条目,则会在最后一个结果中得到一个新列
这是否仅在MySQL中是可能的,还是我必须去更改PHP中的结果?
这甚至是一个好的数据库设计,还是我应该放弃另一个(哪个?)去做呢?
几个Joins可以解决问题。
SELECT u.id, u.hash, uf_f.value AS firstname, uf_l.value AS lastname FROM user AS u LEFT JOIN user_field AS uf_f ON uf_f.user_id = u.id AND uf_f.key = 'firstname' LEFT JOIN user_field AS uf_l ON uf_l.user_id = u.id AND uf_l.key = 'lastname'