У меня есть три настольные книги, пользователи и заказы, поэтому я хочу выбрать все книги с информационными заказами по used_id ............................ .....

  // get all order for user_id 
  const conn = await Client.connect()
  // const sql = 'SELECT * FROM order_books'
  const sql = 'SELECT * FROM books INNER JOIN order_books ON users.id = order_books.user_id;'


  const result = await conn.query(sql)

  conn.release()

  return result.rows 

Книги

CREATE TABLE books (
    id SERIAL PRIMARY  KEY,
    title VARCHAR(150),
    totalpages integer,
    price integer,
    author VARCHAR(255),
    type VARCHAR(100),
    summary text
);

Пользователь

CREATE TABLE users (
    id SERIAL PRIMARY  KEY,
    firstName VARCHAR(150),
    lastName VARCHAR(150),
    email VARCHAR(150) NOT NULL UNIQUE,
    phone VARCHAR(150),
    password VARCHAR(255)
);

Заказы

CREATE TABLE order_books (
    id SERIAL PRIMARY KEY,
    quantity integer NOT NULL,
    user_id bigint REFERENCES users(id) NOT NULL,
    books_id bigint REFERENCES books(id) NOT NULL,
    status VARCHAR(20) NOT NULL
);
0
xh9tlf8d82 26 Янв 2022 в 15:21
Вам нужен весь столбец этих трех таблиц, затем используйте *, и если вам нужен какой-то выбранный столбец, то прямо вниз место имени столбца *.
 – 
Piyush Kachhadiya
26 Янв 2022 в 15:31

2 ответа

select
    b.*, -- i would select only required columns
    ob.*,
    u.*
from
    books b
    join order_books ob (ob.books_id = b.id)
    join users u on (u.id = ob.user_id)
order by u.id asc
0
Mayur 26 Янв 2022 в 15:36

Использовать это

const sql = 'SELECT * FROM books 
INNER JOIN order_books ON books.id = order_books.books_id 
INNER JOIN users ON users.id = order_books.users
order by users.id asc;'

0
Piyush Kachhadiya 26 Янв 2022 в 15:47