我正在开发一个处理朋友请求和友谊的朋友系统。
我有一个名为Member
的表格,其中我保存有关每个成员的信息,包括他们的ID,名字和姓氏
和另一个名为Friendships的表格,我跟踪第一个朋友Friend1
和第二个Friend2
的ID以及友谊形成的日期。(注意:每个请求都记录在我的两次数据库; ex 1 - > 2和2-> 1)
我正在尝试编写一个查询来显示当前用户的朋友的名字和姓氏。我知道我必须INNER JOIN两个表,但我不确定究竟是什么。
答案 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)但它实际上取决于你用这些重复(双向?)友谊关系实现的语义。