Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>simple example - hope it helps...</p> <pre><code>-- TABLES drop table if exists users; create table users ( user_id int unsigned not null auto_increment primary key, username varbinary(32) unique not null ) engine=innodb; drop table if exists user_friends; create table user_friends ( user_id int unsigned not null, friend_user_id int unsigned not null, created_date datetime not null, primary key (user_id, friend_user_id) -- note clustered composite PK (innodb only) ) engine=innodb; -- TRIGGERS delimiter # create trigger user_friends_before_ins_trig before insert on user_friends for each row begin set new.created_date = now(); end# delimiter ; -- STORED PROCEDURES drop procedure if exists insert_user_friend; delimiter # create procedure insert_user_friend ( in p_user_id int unsigned, in p_friend_user_id int unsigned ) proc_main:begin if p_user_id = p_friend_user_id then leave proc_main; end if; insert into user_friends (user_id, friend_user_id) values (p_user_id, p_friend_user_id); end proc_main # delimiter ; drop procedure if exists list_user_friends; delimiter # create procedure list_user_friends ( in p_user_id int unsigned ) proc_main:begin select u.*, uf.created_date, date_format(uf.created_date, '%e-%b-%Y') as created_date_fmt from user_friends uf inner join users u on uf.friend_user_id = u.user_id where uf.user_id = p_user_id order by u.username; end proc_main # delimiter ; -- TEST DATA (call these sproc from your php !) insert into users (username) values ('f00'),('bar'),('alpha'),('delta'),('omega'),('theta'); call insert_user_friend(1,2); call insert_user_friend(1,3); call insert_user_friend(1,4); call insert_user_friend(1,1); -- oops call insert_user_friend(2,1); call insert_user_friend(2,5); call insert_user_friend(4,1); call insert_user_friend(6,1); call list_user_friends(1); </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload