Попытка отобразить идентификатор таблицы 1, так как она относится к таблице 3 - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть три таблицы: exfillocation, phishkit, снимок.Нам нужно иметь возможность запросить exfillocation.filename и напечатать соответствующий snapshot.id, который требует обхода таблицы phishkit.

exfillocation.phishkit_id связан с phishkit.id в качестве внешнего ключа.

Схема exfillocation таблицы:

id  exfil_location    phishkit_id
==  =========         ============
1   ['open.txt']       7442      
2   ['bot.txt']        9931

phishkit.snapshot_id относится к snapshot.id в качестве внешнего ключа.

Схема Phishkit:

id     snapshot_id     md5
===    ============   =====
7442      1492          f4a3954e39b90c02f4a3954e39b90c02
9931      1661          e048f240ad0845b50abe8df9124ce3fb

Схема снимка:

id     asn           url
===    ======        =============
1661    123          badwebsite.malicious.com
1492    31           haxx0rs.hacking.com

Я пытался прочитать четыре различных метода JOIN в postgresql, а также метод UNION, но я не понимаюПохоже, не возвращается столбец snapshot_id.

Я попытался сделать что-то неловкое:

SELECT exfil_location, found_in_file, phishkit_id
    FROM public.lookup_exfillocation
    FULL OUTER JOIN public.lookup_phishkit
    ON public.lookup_exfillocation.phishkit_id = public.lookup_phishkit.id
    FULL OUTER JOIN public.lookup_snapshot
    ON public.lookup_phishkit.snapshot_id = public.lookup_snapshot.id WHERE exfil_location::text NOT LIKE ('__script.txt__') ORDER BY phishkit_id;

Я ожидал увидеть связанный lookup_snapshot.id и связанный lookup_phishkit.id, который тожепоказал.

Results not showing the related snapshot.id column

1 Ответ

0 голосов
/ 04 апреля 2019

Я случайно нашел решение. Все сводилось к тому, какие столбцы я выбирал. Использование * показало все столбцы в операторах JOIN. Затем я выбрал из столбцов, необходимых. Запрос выглядит так:

    FROM public.lookup_exfillocation
    FULL OUTER JOIN public.lookup_phishkit
    ON public.lookup_exfillocation.phishkit_id = public.lookup_phishkit.id
    FULL OUTER JOIN public.lookup_snapshot
    ON public.lookup_phishkit.snapshot_id = public.lookup_snapshot.id WHERE exfil_location::text NOT LIKE ('__script.txt__') ORDER BY phishkit_id;```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...