草庐IT

php - 如何根据连接数组的值选择 INNER JOIN 表的列

我在本地服务器上使用phpMyAdmin创建了一个mySQL数据库。在这个数据库中,我存储了我friend的名字和最喜欢的NBA球队。这显然是一个多对多的关系。为此,我在MySQL中运行以下脚本来为该数据库创建适当的表:CREATETABLE`friends`(`id`int(4)NOTNULLAUTO_INCREMENT,`name`varchar(30)NOTNULL,PRIMARYKEY(`id`));CREATETABLE`teams`(`id`int(4)NOTNULLAUTO_INCREMENT,`name`varchar(30)NOTNULL,PRIMARYKEY(`id

将 LEFT JOIN 与 OR 结合使用时,MySQL 查询会忽略索引?

我有这个问题:SELECTf.uid,fi.statusFROMfriendsfLEFTJOINfriends_invitationsfiONf.fid=fi.fidWHERE(f.uid=2ORfi.uid=2)上面的查询是正确的,但是在性能方面它扫描了friends表中的所有行,并忽略了WHERE子句中的f.uid索引,尽管fid和uid是两个表中的索引。基本上,我想要使用“uid”字段检索存在于“好友”或“好友邀请”表中的用户的最佳方法。有什么想法/建议吗? 最佳答案 怎么样:SELECTf.uid,fi.statusFROM

mysql - 根据 :user_id and then merge into 1 对 2 个 ActiveRecord 数组进行排序

我正在尝试在我的Rails应用程序中构建用户之间的“交友”功能。当用户发出好友请求时,将创建一个新的“好友”项目:@friend=Friend.create(:user_id=>session[:user_id],:friend_id=>params[:friend_id],:status=>"pending")然后其他用户(:friend_id)可以接受或拒绝该请求。接受时,状态更改为“已接受”,一切正常。我现在正在尝试返回friend列表,但我遇到的问题是Friend项目可以将friendID保存在:user_id或:friend_id中,具体取决于发起请求的人。我正在返回所有在:

mysql - SQL 中的传递属性

这是一个我觉得我应该知道的问题,但我一直在用SQL表现出我想要的表现力。我的问题很简单:在SQL中表达传递关系的成语是什么?具体例子:假设我有以下架构:user(email,name)friends(friend1_email,friend2_email)我在表达以下查询时遇到问题:找到用户A、B和C,使得A是B的friend,B是C的friend,但C不是A的friend。我承认这是作业,但我在表达查询时遇到了概念性问题。任何援助将不胜感激。谢谢。 最佳答案 我对复杂查询的建议总是从简单开始:#FindfriendsAandBse

mysql - 如何从 friend 的表中查询 friend 的名字

鉴于下表,我正在尝试编写一个查询来返回用户104的friend的姓名。MYSQLTABLE啦id|requester|requestee|status--------------------------------------1|140|104|'friends'2|104|151|'friends'我试过了,但不太正确,因为它返回了用户140的名称(正确)和用户104的名称(不正确-我想要用户151的名称)。我意识到我的部分问题是由于“ONf.requester=u.id”引起的,但我不确定如何编写查询以获得我想要的内容。SELECTu.nameFROMusersuINNERJOIN

php - Mysql加入多于2个表

我正在尝试连接3个mysql表;friend、用户和评论。users:id|firstName|lastName--------------------------12|edwin|leon9|oscar|smith1|kasandra|riosfriends:userId|friendID----------------------12|99|1212|11|12comments:commenter|comment|commentDate----------------------------12|hey|Oct-21|Hmmmmmm|Nov-19|ok|Nov-29|testing

MySQL 如何从友谊表中选择 friend ?

您好,我有一个用于存储友谊的简单数据库,只有两列person_a,person_b,表示person_a和person_b是friend。从像这样的大列表中,我应该运行什么查询来获取“sam”的所有friend。谢谢。 最佳答案 使用联合:SELECTperson_bFROMfriendshipWHEREperson_a='sam'UNIONSELECTperson_aFROMfriendshipWHEREperson_b='sam' 关于MySQL如何从友谊表中选择friend?,我们

php - 列出所有 friend 并加入用户表

我有一个名为“friends”的数据库,它有列“user_id”和“friend_id”。user_id是邀请者,friend_id是接收者。请注意,当建立友谊时,我不会在数据库中创建2条记录,例如1,2和2,1。考虑到我的users.user_id在“friend”表中的friends.friend_id和friends.user_id之间可能不同,如何列出我的所有friend。还有如何将查询加入“用户”表以获取我所有friend的姓名。 最佳答案 一个选项是两个查询的联合:​​selectu.namefromfriendsfin

php - 在 laravel 5.4 中,我怎样才能只获得用户 friend 的帖子?

$user_id=auth::user()->id;$user_friends=User::find($user_id)->friends;$user_friends_id=$user_friends->pluck('id');$posts=Post::where('user_id',$user_friends_id)->get();returnview('dashboard')->with('posts',$posts);到目前为止,我已经在$user_friends_id中获得了用户friendID,然后将它们与帖子中的用户ID进行匹配,但它只获得了第一个friend的帖子,而不是

mysql - 从数据库中删除 "friends"的最佳做法是什么?

假设您有一个这样的表模式:friends(friendship_id,uid1,uid2,are_friends)。当一个friend与另一个人解除好友关系时,最好的做法是从数据库中删除该行(并重置自动递增)吗?或者您应该简单地将are_friends状态更改为“N”?我很想知道你的想法和原因。编辑:我最关心的是显示一些关于friend状态的信息,以及显示谁加了谁。这样,在添加时我可以将friend的请求通知friend,但还没有让他们成为friend。我最初将are_friends作为具有更多选项的大型ENUM。但是在那个ENUM中,我有诸如removed和blocked之类的选项,