MySQL基礎考題(1)

在北上廣深有大量的空巢青年,他們公司,住所兩點一線來回往返,週末喜歡宅在家裏看劇打遊戲,缺少線下社交,現在有這樣一款應用,可以根據用戶的屬性,興趣等維度進行朋友推薦,爲希望線下社交的年輕人提供一個交友平臺,其交友推薦功能規則設計爲:籃球愛好者,根據附近1km內,且年齡差異<5歲,具有相同愛好的進行擴線,擴線深度爲2層,內部邏輯如下圖:

在這裏插入圖片描述

數據庫設計

用戶基本信息表user_property
在這裏插入圖片描述

用戶好友關係user_friend_relation
在這裏插入圖片描述

愛好字典表hobby_dict
在這裏插入圖片描述
數據庫操作
有如下幾張表

用戶基本信息表user_property
在這裏插入圖片描述

用戶好友關係表user_friend_relation
在這裏插入圖片描述

愛好字典表hobby_dict
在這裏插入圖片描述

1.查找小於26歲的用戶信息,展示用戶的基本信息(暱稱,郵箱,性別,年齡):
select nikename,email,sex,age from user_property where username=“lilei”;
在這裏插入圖片描述
2,頁面需要展示lelei用戶的基本信息(暱稱,郵箱,性別,愛好),請設計相關sql:
select nikename,email,sex,age,hobbie from user_property where usename=“lilei”;
在這裏插入圖片描述3,頁面需要展示xiaoqoang用戶關於籃球愛好的好友推薦信息,展示內容包含推薦好友的基本信息(暱稱,年齡,性別,郵箱,愛好),並按年齡倒序排序
解法1:
select p.nikename,age,sex,email,h.hobby_value from user_property p
left join user_friend_relation f on p.usename=f.friend_id
left join hobby_dict h on f.hobby=h.hobby_key where f.usename="xiaoqiang"and h.hobby_value=“籃球”
order by p.age desc;
在這裏插入圖片描述解法2:
select * from user_property as P
inner join hobby_dict as H
on P.hobbie like concat(’%’,h.hobby_key,’%’) and h.hobby_value=‘籃球’
where P.usename
in (select friend_id from user_friend_relation where usename=‘xiaoqiang’);
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章