我想用fk_user和iduser_selected的where显示表user和favorites之间相关的字段,如果它们不相关,则只有用户字段的那些。
fk user 来自 table id user,id_selected 来自 selected user
那怎么办?
桌子 用户
id |name |age |nickname
1 |Carla |23 |carr
2 |andre |24 |andd
3 |jorge |23 |jorgg
4 |gabri |31 |gab
5 |elena |19 |ele
桌子 最爱
favoritespk | fkuser | iduser_selected | idstate_favorite
1 | 1 | 2 | 1
2 | 1 | 3 | 0
3 | 2 | 1 | 1
SELECT *
FROM user A, favorites B
WHERE A.fk_user (+) = B.iduser_selected;
只是给你一个想法。这个存储过程以
userId
为参数。
CREATE PROCEDURE get_user_and_favorites(IN `user_id` INT)
BEGIN
SELECT *
FROM user u
LEFT JOIN favorites f ON u.id = f.fkuser AND f.iduser_selected = user_id
WHERE u.id = user_id OR f.fkuser = user_id;
END