programing

SQL 값이 없을 때도 행 유지

minimums 2023. 10. 25. 23:12
반응형

SQL 값이 없을 때도 행 유지

값이 빠져도 행을 유지하려고 합니다.하지만 도저히 알 수가 없네요.

10.4.14-마리아DB

쿼리 예제:

SELECT
    data.name,
    am.value AS color
FROM
    color_data cd

    INNER JOIN color_data am
     ON cd.value = am.id

    INNER JOIN data
     ON cd.id = data.id

WHERE
    data.type = "vehicles"
    AND data.slug LIKE "%something%"
    AND cd.key = "color_id"
    AND am.key = "color"

얻는 정보:

----------------------
   name   |  color   |
----------------------
 car      | red
 bicycle  | blue

원하는 것:

----------------------
   name   |  color   |
----------------------
 car      | red
 boat     |         <-- When this is empty keep the row.
 bicycle  | blue

따라서 색상의 ID가 없으면 행이 제거됩니다.저는 여전히 그 열을 유지하고 싶습니다.그건 아마 제가 놓치고 있는 아주 기본적인 것일 겁니다.

JOIN을 시작으로 쿼리를 다시 작성해야 합니다.data,사용하다LEFT JOIN대신에INNER JOIN, 그리고 조건을 달았습니다.color조인 조건의 테이블:

SELECT
    data.name,
    am.value AS color
FROM
    data
LEFT JOIN
    color_data cd ON cd.id = data.id AND cd.key = 'color_id'
LEFT JOIN
    color_data am ON am.id = cd.value AND am.key = 'color'
WHERE
    data.type = 'vehicles'
AND data.slug LIKE '%something%'

사용하다LEFT JOINs 모든 행을 유지할 테이블부터 시작합니다.

SELECT data.name, am.value AS color
FROM data
     color_data cd LEFT JOIN
     ON cd.id = data.id AND
        cd.key = 'color_id' LEFT JOIN
     color_data am
     ON cd.value = am.id AND
        am.key = 'color'
WHERE data.type = 'vehicles' AND
      data.slug LIKE '%something%';

주의:

  • data지금은 1등입니다.FROM조항은 당신이 그 행들을 유지하기를 원하기 때문입니다.
  • 필터링 조건:data에 있습니다WHERE
  • 다른 테이블의 필터링 조건이 적합합니다.ON
  • 큰따옴표가 아닌 문자열의 SQL 표준입니다.

언급URL : https://stackoverflow.com/questions/66754868/keep-the-row-even-when-there-is-no-value-found-sql

반응형