Как по-прежнему возвращать psql запрос, если значение в строке равно нулю (значение также связано с другой строкой) - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть две таблицы в postgres дБ. Компании и буткемперы. Companies.company_id является первичным ключом внешнего ключа bootcampers.company_id.

Попытка выбрать все строки из bootcampers и company_id и company_name из компаний, основанных на company_id. Некоторые буткемперы еще не будут иметь company_id. Как я могу изменить этот psql запрос, чтобы сказать, пожалуйста, верните все поля, но если company_id пуст, верните все остальное в любом случае. Есть ли что-то, что мне нужно использовать: «null is ok»

SELECT uid,
    email,
    photourl,
    first_name,
    surname,
    aboutme,
    job_title,
    company_name,
    salary,
    start_date,
    previous_roles,
    cohort_num,
    region,
    job_satisfaction,
    new_job,
    bootcampers.twitter,
    github,
    portfolio,
    bootcampers.linkedin 
FROM companies 
  INNER JOIN bootcampers ON bootcampers.company_id = companies.company_id 
WHERE first_name ILIKE '%' || $1 || '%'

1 Ответ

0 голосов
/ 30 апреля 2020

Поскольку вы хотите получить все от Bootcampers, вам нужно RIGHT JOIN вместо INNER JOIN

SELECT uid,
    email,
    photourl,
    first_name,
    surname,
    aboutme,
    job_title,
    company_name,
    salary,
    start_date,
    previous_roles,
    cohort_num,
    region,
    job_satisfaction,
    new_job,
    bootcampers.twitter,
    github,
    portfolio,
    bootcampers.linkedin 
FROM companies 
  RIGHT JOIN bootcampers ON bootcampers.company_id = companies.company_id 
WHERE first_name ILIKE '%' || $1 || '%'

Будьте осторожны, если вы хотите добавить фильтр к столбцу из таблицы компаний, поскольку это может свести на нет ваш RIGHT JOIN и заставить его работать как INNER снова.

...