mysql INNER JOIN

정인호·2022년 9월 25일
0

위코드-개념정리

목록 보기
14/19

mysql DataBase를 이용해서 프론트와 통신할 때 프론트에서 원하는 정보를 요청받고 그에 해당하는 정보를 DB에서 꺼내서 응답으로 보내주는 통신을 해보았다.

const { DataSource } = require('typeorm');

const dataSource = new DataSource({
    type: process.env.TYPEORM_CONNECTION,
    host: process.env.TYPEORM_HOST,
    port: process.env.TYPEORM_PORT,
    username: process.env.TYPEORM_USERNAME,
    password: process.env.TYPEORM_PASSWORD,
    database: process.env.TYPEORM_DATABASE
})

dataSource.initialize()
    .then(() => {
        console.log(`DataSource has been initialized!`)
    })
    .catch((error) => {
        console.error("Error during Data Source initialization", error);
    });

module.exports = dataSource;

먼저 database를 초기화 시켰다.

그리고 프론트에서 http통신이 들어오면 DB에서 해당 정보를 꺼내오는데,

SELECT 
        items.id as items_id,
        items.name as items_name,
        items.description,
        items.price,
        items.detail,
        items.detail_image,
        item_images.id as item_images_table_id,
        item_images.name as item_images_table_name,
        item_images.image_URL as item_images_table_image_URL,
        item_images.item_id as item_images_table_item_id,
        options_items.id as options_items_id,
        options_items.item_id as options_items_item_id,
        options_items.option_id,
        options.id as options_table_id,
        options.name as options_table_name,
        options.price as options_table_price,
        tags_items.id as tags_item_table_id,
        tags_items.tag_id as tags_items_table_tag_id,
        tags_items.item_id as tags_items_table_item_id,
        tags.id as tags_id,
        tags.name as tags_name
        FROM items
            INNER JOIN item_images
                ON items.id = item_images.item_id
            INNER JOIN options_items
                ON items.id = options_items.item_id
            INNER JOIN options
                ON options_items.option_id = options.id
            INNER JOIN tags_items
                ON items.id = tags_items.item_id
            INNER JOIN tags
                ON tags_items.tag_id = tags.id

나의 경우는 item table과 item table을 참조하고 있는 table들을 inner join을 통해 그 안의 모든 column들을 뽑아내야 해서 총 다섯번을 join했다.

이렇게 뽑아낸 데이터를 service, controller, router를 통해 client에게 보내 준다.

profile
경제학과를 졸업후 개발에 뛰어든 햇병아리입니다.

0개의 댓글