Tôi có một người dùng và một người bạn bảng. Người dùng có chi tiết người dùng và bạn bè có bạn bè của người dùng. Dưới đây là giản đồ của bảng người dùng ..Nhận bạn ngẫu nhiên của bạn bè với số lượng tương đối
create table smsusers(
id varchar(60),
password varchar(50) not null,
fname varchar(30) not null,
lname varchar(30),
mailid varchar(50) not null,
gender varchar(10) not null,
primary key(id)
);
và bảng friend ..
create table friends_list(
friend_of varchar(60) NOT NULL,
friends_id varchar(60) NOT NULL,
friendship_status varchar(30),
friendship_date timestamp NOT NULL,
primary key(friend_of,friends_id),
foreign key(friend_of) references smsusers(id)
ON DELETE CASCADE ON UPDATE CASCADE);
Hồ sơ pic
create table profile_pic(pic_id varchar(200),profile_pic_path varchar(1000),small_pic_path varchar(1000),
adddate varchar(100),userid varchar(60),foreign key(userid) references smsusers(id) ON DELETE CASCADE ON UPDATE CASCADE,
primary key(pic_id));
Ở đây tôi muốn lấy ngẫu nhiên 5 người bạn của người bạn với nhau bạn bè số
Tôi đã thử truy vấn này
SELECT DISTINCT ff.friends_id,
concat(u.fname,' ',u.lname),
pp.small_pic_path,
count(*) AS mutual_friend_count
FROM
friends_list f
JOIN friends_list ff
ON ff.friend_of =f.friends_id
LEFT JOIN smsusers u
ON
u.id=ff.friends_id
LEFT JOIN profile_pic pp
ON
ff.friends_id=pp.userid
WHERE f.friend_of = 1
AND ff.friends_id NOT IN (1)
GROUP BY friends_id
Truy vấn này hiển thị bạn bè của bạn bè cũng như bạn bè và cả hai bên cũng không chính xác. Truy vấn rằng tôi tried.
Bạn có thể xây dựng một truy vấn cho thấy bạn của bạn bè và đếm tương ứng, không phụ thuộc vào 'lẫn nhau'? – Strawberry
Tôi đã cố gắng plese [xem] (http://sqlfiddle.com/#!2/b7581/4) – user2302288