CREATE TABLE users
(
id serial primary key not null unique,
email varchar(255) not null unique,
login varchar(30) not null unique,
password varchar(255) not null,
first_name varchar(20),
last_name varchar(20),
phone varchar(13)
);
CREATE TABLE address
(
id serial primary key not null unique,
country varchar(255) not null,
street varchar(255) not null,
city varchar(255) not null,
zip integer not null
);
CREATE TABLE users_invoice
(
user_id integer references users (id) not null,
address_id integer references address (id) not null
);
CREATE TABLE users_shipping
(
user_id integer references users (id) not null,
address_id integer references address (id) not null
);
INSERT INTO users (email, login, password) VALUES('email1@mail.ru', 'login1', 'password');
INSERT INTO users (email, login, password) VALUES('email2@mail.ru', 'login2', 'password');
INSERT INTO users (email, login, password) VALUES('email3@mail.ru', 'login3', 'password');
INSERT INTO address (country, street, city, zip) VALUES('country1', 'street1', 'city1', 123);
INSERT INTO address (country, street, city, zip) VALUES('country2', 'street2', 'city2', 123);
INSERT INTO address (country, street, city, zip) VALUES('country3', 'street3', 'city3', 123);
INSERT INTO users_invoice (user_id, address_id) VALUES (1,2);
INSERT INTO users_shipping (user_id, address_id) VALUES (1,3);
select * from users;
select * from address;
select * from users_invoice;
select u.*,
a.id address_id,
a.country invoice_country,
a.street invoice_street,
a.city invoice_city,
a.zip invoice_zip
from users u
join users_invoice as u_i
on u.id=u_i.user_id
join address as a
on u_i.address_id=a.id;
select a.* from address as a, users_invoice as u_i where u_i.user_id=1 AND u_i.address_id=a.id;
select a.* from address as a, users_shipping as u_i where u_i.user_id=1 AND u_i.address_id=a.id;