Выберите в таблицах с несколькими множителями PSQL без объединения - PullRequest
0 голосов
/ 04 июня 2018

(Пожалуйста, исправьте мой, если я сделаю несколько ошибок)

У меня есть 2 таблицы:

  • ДЕЯТЕЛЬНОСТЬ : ID / ИМЯ/ СОДЕРЖАНИЕ / ДАТА /ETC..
  • СТАТЬИ : ID / ИМЯ / КОНТЕНТ / ДАТА /ETC..

У меня естьсоздал один скрипт для удаления изображения, когда его нет в БД, проблема в том, что я не знаю, как проверить содержание действия и статьи по одному и тому же запросу, потому что этот запрос ниже просто удаляет мои изображения деятельности ..

#!/bin/bash

db="intranet_carc_development"
user="benjamin"

echo "DELETING UNUSED FILES AND IMAGES..."
for f in public/uploads/files/*
do
  if [[ -f "$f" ]]
  then
    f="$(basename "$f")"
    psql $db $user -t -v "ON_ERROR_STOP=1" \
    -c "select content from public.articles where content like '%$f%'" | grep . \
    && echo "exist" \
    || rm public/uploads/files/$f
  fi
done
printf "DONE\n\n"

Если привязано что-то вроде:

select content from public.articles, public.activities where content like '%$f%'" 

но у меня есть этот журнал ошибка :

ERROR:  column reference "content" is ambiguous

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете попробовать что-то вроде

WITH artcontent AS (
    SELECT content
    FROM public.articles
),
actcontent AS (
    SELECT content
    FROM public.activities
),
merge AS (
    SELECT * FROM artcontent 
    UNION ALL
    SELECT * FROM actcontent 
)
SELECT *
FROM merge

В выражении UNION ALL будут собраны два ваших результата: artcontent (из статей) и actcontent (из действий).

Надеюсь, это поможет вам!

...