查询两个好友推荐信息好友信息的SQL语句

群里朋友问题,下面解答过程如下:

 

要求:

该怎么样查找两个人的共同好友(这两个人还不是好友)

就像人人网实现的那样,有谁懂sql语句吗?

假如有人员表member,好友表friends


比如我和你是好友,这样你就在我的好友列表里面,现在要实现将你好友列表里面的好友推荐给我(这些被推荐的好友不能已经是我的好友)

 

解答1:

查询用户1,好友4,查询他们之间的共同好友。

SELECT m.uid FROM member m WHERE  m.uid IN (SELECT f1.fuid FROM friends f1 LEFT JOIN friends f2 ON f1.fuid = f2.fuid  WHERE f1.uid = 1 AND f2.uid = 4 )

通过not in 反过来查询他们不是共同的好友

SELECT * FROM friends f WHERE f.uid = 4 AND f.fuid NOT IN ( SELECT m.uid FROM member m WHERE  m.uid IN (SELECT f1.fuid FROM friends f1 LEFT JOIN friends f2 ON f1.fuid = f2.fuid  WHERE f1.uid = 1 AND f2.uid = 4 ) )

 

解答2:

通过使用分组查询

SELECT * FROM member m WHERE  m.uid IN (SELECT f1.fuid FROM friends f1 LEFT JOIN friends f2 ON f1.fuid = f2.fuid  WHERE f1.uid = 1 AND f2.uid = 4 )

SELECT * FROM member m  WHERE m.uid IN (SELECT fuid  FROM  (SELECT *,COUNT(*) c FROM  friends f WHERE f.uid IN (1,4) GROUP BY f.fuid ) f1 WHERE f1.c = 1)

 

解答3:

优化分组,通过having 分组过滤

SELECT *,COUNT(*) c FROM  friends f WHERE f.uid IN (1,4) GROUP BY f.fuid HAVING c = 1

 

 

 

 

 

 

好的,以下是一个简单的好友管理系统的代码示例,包括登录和面板功能。这里使用了Python Flask框架和SQLite数据库。 首先,我们需要安装Flask和SQLite: ```python pip install flask pip install sqlite3 ``` 接下来,创建一个名为app.py的Python文件,并添加以下代码: ```python from flask import Flask, render_template, request, redirect, url_for, session import sqlite3 app = Flask(__name__) app.secret_key = 'secret_key' @app.route('/') def login(): return render_template('login.html') @app.route('/login', methods=['POST']) def do_login(): username = request.form['username'] password = request.form['password'] conn = sqlite3.connect('users.db') cursor = conn.cursor() cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, password)) user = cursor.fetchone() if user: session['logged_in'] = True session['username'] = username return redirect(url_for('home')) else: return render_template('login.html', error='Invalid username or password') @app.route('/home') def home(): if session.get('logged_in'): return render_template('home.html', username=session['username']) else: return redirect(url_for('login')) @app.route('/logout') def logout(): session['logged_in'] = False session.pop('username', None) return redirect(url_for('login')) @app.route('/friends') def friends(): if session.get('logged_in'): conn = sqlite3.connect('users.db') cursor = conn.cursor() cursor.execute("SELECT * FROM friends WHERE username = ?", (session['username'],)) friends = cursor.fetchall() conn.close() return render_template('friends.html', friends=friends) else: return redirect(url_for('login')) @app.route('/add', methods=['POST']) def add(): name = request.form['name'] phone = request.form['phone'] conn = sqlite3.connect('users.db') cursor = conn.cursor() cursor.execute("INSERT INTO friends (username, name, phone) VALUES (?, ?, ?)", (session['username'], name, phone)) conn.commit() conn.close() return redirect(url_for('friends')) if __name__ == '__main__': app.run(debug=True) ``` 接下来,我们需要创建一个名为users.db的SQLite数据库,并在其中创建两个名为users和friends的表。users表用于存储用户名和密码,friends表用于存储每个用户的好友列表。以下是创建表的SQL语句: ```sql CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT); CREATE TABLE friends (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, name TEXT, phone TEXT); ``` 现在,我们可以创建以下三个HTML模板:login.html、home.html和friends.html。这些模板可以在Flask应用程序中的templates文件夹中创建。 login.html: ```html <!DOCTYPE html> <html> <head> <title>Login</title> </head> <body> {% if error %} <p>{{ error }}</p> {% endif %} <form method="POST" action="/login"> <input type="text" name="username" placeholder="Username"><br> <input type="password" name="password" placeholder="Password"><br> <input type="submit" value="Login"> </form> </body> </html> ``` home.html: ```html <!DOCTYPE html> <html> <head> <title>Home</title> </head> <body> <h1>Welcome {{ username }}</h1> <a href="/friends">Friends</a><br> <a href="/logout">Logout</a> </body> </html> ``` friends.html: ```html <!DOCTYPE html> <html> <head> <title>Friends</title> </head> <body> <h1>Friends</h1> <table> <tr> <th>Name</th> <th>Phone</th> </tr> {% for friend in friends %} <tr> <td>{{ friend[2] }}</td> <td>{{ friend[3] }}</td> </tr> {% endfor %} </table> <form method="POST" action="/add"> <input type="text" name="name" placeholder="Name"><br> <input type="text" name="phone" placeholder="Phone"><br> <input type="submit" value="Add"> </form> <a href="/home">Home</a><br> <a href="/logout">Logout</a> </body> </html> ``` 现在,我们可以运行应用程序: ```python python app.py ``` 然后,在浏览器中打开http://localhost:5000,您将看到登录页面。输入正确的用户名和密码,您将被重定向到主页,其中您可以访问您的好友列表,添加新的好友并注销。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值