1

Temat: Raport dla argumentów wg których znaleziono rekordy

Dobry wieczór

select distinct  a.miejscowość, a.nazwa_rekordu, a.pna, a.email, a.kontakt, a.województwo
from baza9003 a,
(select emails from roboczyglowny_2015_01_28) r
where a.email like '%'|| trim(r.emails) ||'%'
ORDER by city;

w/w select z tabeli roboczyglowny_2015_01_28 pobiera argumenty = adresy emailowe i z drugiej tabeli wyszukuje rekordy zawierające te adresy emailowe.
Jak zrobić, żeby mieć później raport:
1. dla tych adresów zostały znalezione rekordy
2. dla tych adresów nic nie znaleziono
?

Pozdrawiam serdecznie
Wiesiek

2

Odp: Raport dla argumentów wg których znaleziono rekordy

Zobacz czy to działa?

select distinct  a.miejscowość, a.nazwa_rekordu, a.pna, a.email, a.kontakt, a.województwo,case when r.emails is null then 'nie znaleziono email-a' else null end as status
from baza9003 a
left join roboczyglowny_2015_01_28 r on a.email like '%'|| trim(r.emails) ||'%'

3

Odp: Raport dla argumentów wg których znaleziono rekordy

Dziękuję za błyskawiczną odpowiedź
DZIAŁA ale nie o to mi chodziło.
w rezultacie Twojego selecta wynik przykładowe dwa rekordy:

" Bierutów ";" Firma 1 ";" 56-420 ";" [email protected] ";" Tel/fax: 71 ... .. .. ";" Dolnośląskie ";""

" Bierutów ";" Firma 2 ";" 56-420 ";"  ---  ";" Tel.: 71 ... .. .. ";" Dolnośląskie ";"nie znaleziono email-a"

A mi chodziło o to aby:

mój  select, ten z mojego pierwszego wpisu, dobrze działa w rezultacie dając tabelę: a.miejscowość, a.nazwa_rekordu, a.pna, a.email, a.kontakt, a.województwo
from baza9003 a

oprócz tego co robi chciałbym mieć tabelę z roboczyglowny_2015_01_28: dla_tych_znaleziono_rekordy_z_baza9003, dla_tych_NIE_znaleziono_rekordow_w_baza9003

Pozdrawiam

4

Odp: Raport dla argumentów wg których znaleziono rekordy

rozumiem, że twóje zapytanie "select distinct  a.miejscowość, a.nazwa_rekordu, a.pna, a.email, a.kontakt, a.województwo
from baza9003 a" działa prawidłowo, a potrzebujesz takiego selecta

select r.emails, case when exists (select 1 from baza9003 a where a.email like '%'|| trim(r.emails) ||'%' ) then 'email znaleziony' else 'nie znaleziono emaila' end as status
from roboczyglowny_2015_01_28 r;

5

Odp: Raport dla argumentów wg których znaleziono rekordy

Dziękuję, natchnąłeś mnie.

Zrobiłem to tak, mniej elegancko ale dla mnie bardziej zrozumiale, bo CASE jeszcze nie rozumiem.

dodałem na początek r.emails i na koniec drugi select i o to mi chodziło.

select distinct  r.emails, a.miejscowość, a.nazwa_rekordu, a.pna, a.email, a.kontakt, a.województwo INTO TABLE adresy_z_b03
from baza9003 a,
(select emails from roboczyglowny_2015_01_28) r
where a.email like '%'|| trim(r.emails) ||'%'
ORDER by miejscowość;
select emails  into TABLE rob_i_b03 from adresy_z_b03;


Ale mam z inna tabelą problem bo pokrywają się nazwy pól "emails"

select distinct r.emails, a.city, a.address, a.emails, a.emails_domain, a.name, a.phone, a.fax, a.mobile, a.code INTO TABLE adresy_z_ALL_PL
from pl_all_bez_back_2015_01_24 a,
(select emails from roboczyglowny_2015_01_28) r
where a.emails like '%'|| trim(r.emails) ||'%' or a.emails_domain like '%'|| trim(r.emails) ||'%'
ORDER by city;
select r.emails  into TABLE rob_i_ALL_PL from adresy_z_ALL_PL;

BŁĄD:  kolumna "emails" określona więcej niż raz
********** Błąd **********
BŁĄD: kolumna "emails" określona więcej niż raz
Stan SQL: 42701                                       

#a.emails usunąłem i ruszyło. Ale wolałbym żeby to a.emails zostało.

Jak "w locie" na potrzeby jednego SELECTA zmienić nazwę pola aby nie było BŁĘDU?

Pozdrawiam
Wiesiek

6

Odp: Raport dla argumentów wg których znaleziono rekordy

select r.emails as pierwszy_emails, a.emails as drugi_emails
from ...
--
The best thing about modern society is how easy it is to avoid contact with it.

7

Odp: Raport dla argumentów wg których znaleziono rekordy

Dziękuję
:-)