我有2个表,我想加入doctrine left join。我希望结果能够显示我的"用户表"即使得分表上没有用户数据。 而且我希望它在我查询其他月份时仍能显示每个用户。
我的用户表"作为主要表格
userid | username | usergroup
------------------------------
1 | AAAA | A
2 | BBBB | A
3 | CCCC | B
4 | DDDD | C
这是我的"得分表"加入"用户表"
scoreid | userid | month | game1 | game2
-----------------------------------------
1 | 1 | 1 | 80 | 80
2 | 1 | 2 | 60 | 90
3 | 3 | 1 | 80 | 70
当我选择usergroup
= A且month
= 1
username | game1 | game2
---------------------------
AAAA | 80 | 80
BBBB | NULL | NULL
这是我到目前为止所做的。这不是我的实际学说代码。
->select('u.username','s.game1','s.game2')
->from('xxxxxxx:User', 'u')
->leftJoin('xxxxxxx:Score', 's', 'WITH', 'u.userid = s.userid')
->where('u.usergroup = :group')
->andWhere('s.month = :month OR s.month is NULL')
问题是当我尝试再次使用例如month
= 2进行查询时,查询结果为空或者没有显示来自"用户表"的所有用户,因为我只过滤了相等的月或当它的NULL。
如何进行查询,以便我仍然可以每个月查询每个用户?
任何帮助都将非常感激。感谢
答案 0 :(得分:0)
好的,感谢Prava的链接。所以我想出来解决这个问题。
->select('u.username','s.game1','s.game2')
->from('xxxxxxx:User', 'u')
->leftJoin('xxxxxxx:Score', 's', 'WITH', 'u.userid = s.userid AND s.month =:month')
->where('u.usergroup = :group')