我该如何编写这个SQL查询?显示朋友

时间:2015-12-29 21:35:01

标签: php mysql

我正在开发一个处理朋友请求和友谊的朋友系统。

我有一个名为Member的表格,其中我保存有关每个成员的信息,包括他们的ID,名字和姓氏

和另一个名为Friendships的表格,我跟踪第一个朋友Friend1和第二个Friend2的ID以及友谊形成的日期。(注意:每个请求都记录在我的两次数据库; ex 1 - > 2和2-> 1)

我正在尝试编写一个查询来显示当前用户的朋友的名字和姓氏。我知道我必须INNER JOIN两个表,但我不确定究竟是什么。

3 个答案:

答案 0 :(得分:0)

可能是这样的蠢事

 select a.firstname, b.lastname from Member a 
 inner join Friendships b on (b.friend1_id = a.id ) 
 and a.id = 'current_user_id'

答案 1 :(得分:0)

假设friend表和members表具有相同的ID列,

//===============================
//file "Tmpl_Enum.hpp"
//===============================


#include <functional>
#include <set>

template <typename TValue, typename T>
class Tmpl_Enum {

protected:

 // Constructors
 explicit Tmpl_Enum(const TValue& Value);


 // Comparison functor for the set of instances
 struct Enum_Ptr_Less:
     public std::binary_function<const Tmpl_Enum<TValue, T>*, const Tmpl_Enum<TValue, T>*, bool> {
       bool operator()(const Tmpl_Enum<TValue, T>* E_1, const Tmpl_Enum<TValue, T>* E_2)
       { return E_1->Get_Value() < E_2->Get_Value(); }
  };


public:

 typedef std::set<const Tmpl_Enum<TValue, T>*, Enum_Ptr_Less> instances_list;
 typedef typename instances_list::const_iterator const_iterator;

 const TValue& Get_Value(void) const { return m_value; }

protected:
 TValue m_value;
 static instances_list s_instances;
};

template <typename TValue, typename T>
inline Tmpl_Enum<TValue, T>::Tmpl_Enum(const TValue& Value):
 m_value(Value)
{
 s_instances.insert(this);
}


//===============================
//file "Test_Enum_String.hpp"
//===============================

#include <string>

#include "Tmpl_Enum.hpp"

class Test_Enum_String:
  public Tmpl_Enum<std::string, Test_Enum_String> {

private:

  explicit Test_Enum_String(const std::string& Value):
    Tmpl_Enum<std::string, Test_Enum_String>(Value) { }

public:

  static const Test_Enum_String enum_Alpha;
  static const Test_Enum_String enum_Beta;
  static const Test_Enum_String enum_Delta;
  static const Test_Enum_String enum_Epsilon;
  static const Test_Enum_String enum_Omega;
};



//===============================
//file "Test_Enum_String.cpp"
//===============================

#include "Test_Enum_String.hpp"


Tmpl_Enum<std::string, Test_Enum_String>::instances_list
Tmpl_Enum<std::string, Test_Enum_String>::s_instances;

const Test_Enum_String Test_Enum_String::enum_Alpha("Alpha");
const Test_Enum_String Test_Enum_String::enum_Beta("Beta");
const Test_Enum_String Test_Enum_String::enum_Delta("Delta");
const Test_Enum_String Test_Enum_String::enum_Epsilon("Epsilon");
const Test_Enum_String Test_Enum_String::enum_Omega("Omega");




//===============================
//file "Test_Enum_String.cpp"
//===============================

答案 2 :(得分:0)

在外键上(我猜是Members.Id = Friendships.Friend1)但它实际上取决于你用这些重复(双向?)友谊关系实现的语义。