我需要使用两个表中的PHP进行查询。第一个表具有用户信息,例如(userName,age,country)。
在我的应用程序中,用户可以像其他用户一样,因此我创建了第二个包含两个字段的表(myName,userName)userName将与第一个表中的值相同。
我需要的是选择我喜欢的所有用户。
第一张表:
userName | age | country
--------------------------------------
name1 | 20 | USA
name2 | 21 | UK
name3 | 23 | UAE
name4 | 33 | India
name5 | 19 | Canada
name6 | 25 | USA
第二张表:
userName myName
name1 | ahmed
name2 | Mic
name3 | ahmed
name4 | Danil
name5 | ahmed
name5 | Mic
name6 | ahmed
从上表中可以看出Ahmed喜欢3个用户名。我需要使用PHP来选择依赖于POST的三个用户。
谢谢,我希望问题很清楚
答案 0 :(得分:0)
假设您的第一个表被调用(用户)而第二个表是(users_likes),那么您应该有这样的查询:
SELECT u.* FROM users u
INNER JOIN users_likes ul ON ul.userName = u.userName
WHERE ul.myName = 'ahmed'
答案 1 :(得分:0)
首先:我假设您正在使用像MySQL这样的关系型数据库,如果是这样的话,您就会错误地解决这个问题。
为什么呢?如果一个用户,即约翰,喜欢布兰登和雅各布,但布兰登决定他的名字现在必须是白兰度(因为他有奇怪的昵称),用户布兰登将被删除所有未来的查询,因为他的名字已经改变。或者如果数据库中有两个" Brandon Smith"怎么办?你不想同时喜欢这两个。
我们解决这个问题的方法是使用关联表和连接。这就是主键(' id')在数据库中如此重要的原因。这种方式只要用户的ID没有变化(除非用户被删除,这不应该发生)我们可以保持这种关系。
Table 'user'
id | first_name | last_name | email |
1 | John | Doe | a@b.org |
2 | Brandon | Smith | c@d.org |
3 | Jacob | Smidt | e@f.org |
Table 'user_like'
id | user_id | liked_user_id
1 | 1 | 2
2 | 1 | 3
因此,您将选择用户并加入user_like,其中user_id = user.id,它将返回所有喜欢的user_ids。
就查询而言,它确实为您创造了更多的工作,但它使数据库更加可靠。