지난 글에 이어서 mysql을 쓰게 되었다.

모든 테이블에서 특정 값으로 조건에 맞는 데이터를 찾는 것인데

sql 잘하시는 분들이 쓰신 여러 글을 볼 수 있었지만 따라하기 무서웠다

겉핥기 중인데다가 js로 하고 있어서 좋지 않은 방법인지는 모르겠지만 쉽게 할 수 있길래 공유한다

export const getDbDistribute = async (root, args) => {
    try {
    // 스키마에서 모든 테이블 이름 배열로 저장하기
      const [tables] = await db.query(`
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'sports_db';
      `);
      let result = [];
 
    // 배열 반복문으로 조건 찾아서 리턴 배열에 저장하기
     await Promise.all(tables.map(async (table) => {
        const [rows] = await db.query(`
        SELECT *
        FROM sports_db.${table.TABLE_NAME}
        WHERE year = ?
        `, [args])
        result.push(...rows);
      }))
      console.log(result)
      return result;
    } catch (error) {
      console.error("쿼리 실행 중 오류:", error);
      throw error;
    }
};

 

쿼리 비동기식이랑 args 쿼리 변수로 사용하는 방법이나 좋은 공부가 되었다.

+ Recent posts