1

Temat: nieprawidłowe wskazanie na pozycję w klauzuli FROM

select distinct  a.pna, a.Miejscowość, a.Email, a.WWW, a.rodzaj_branży
from baza9003 a,
(select powiat from Tabela_32) b,
(select distinct pna from pna where województwo='dolnośląskie' and powiat=b.powiat) p
where a.pna like '%'|| trim(p.pna) ||'%'
order by rodzaj_branży;

BŁĄD:  nieprawidłowe wskazanie na pozycję w klauzuli FROM dla tabeli "b"
LINE 4: ...m pna where województwo='dolnośląskie' and powiat=b.powiat) ...
                                                             ^
HINT:  Występuje wpis dla tabeli "b", ale nie może mieć odniesień z tej części zapytania.

********** Błąd **********

BŁĄD: nieprawidłowe wskazanie na pozycję w klauzuli FROM dla tabeli "b"
Stan SQL: 42P01
Wskazówka: Występuje wpis dla tabeli "b", ale nie może mieć odniesień z tej części zapytania.
Znak: 222


Gdzie tu jest BŁĄD pogrzebany?

jeżeli
usunę
(select powiat from Tabela_32) b,
i zamiast
and powiat=b.powiat
wpiszę
and powiat='powiat1' or   powiat='powiat2' or  powiat='powiat3'

to wszystko działa ale nie o to mi chodzi. Chcę aby ten drugi warunek pochodził z tabeli.
Jak to zrobić?

2

Odp: nieprawidłowe wskazanie na pozycję w klauzuli FROM

Wow, ale kombinujesz - widać, że obwody Ci się przegrzewają (w dobrym tego słowa rozumieniu)

Zerknij czy dobrze Cię zrozumiałem
with baza9003 (Miejscowość,Email,WWW,rodzaj_branży,pna) as (values
('Amsterdam','[email protected]','www.a.com','IT','pna1'),
('Amsterdam','[email protected]','www.a.com','IT','pna1'),
('Barcelona','[email protected]','www.b.com','IT','pna2')),
     pna (powiat,województwo,pna) as (values ('powiat 1','dolnośląskie','pna1'),('powiat 1','dolnośląskie','pna1'),('powiat 2','dolnośląskie','pna2'),('powiat 3','województwo 2','pna3')),
     Tabela_32 (powiat) as (values ('powiat 1'),('powiat 2'),('powiat 2'),('powiat 3'),('powiat 4'))
select distinct a.pna, a.Miejscowość, a.Email, a.WWW, a.rodzaj_branży
  from baza9003 a
where
      exists (select 1
                from pna
               where województwo='dolnośląskie'
                 and exists (select 1
                               from Tabela_32 t
                              where t.powiat=pna.powiat)
                 and a.pna ilike '%'|| trim(pna.pna) ||'%')
order by rodzaj_branży;

Staraj się załączać informacje o tabelach (wszystko co masz po CREATE TABLE), których używasz - łatwiej udzielić odpowiedzi.
Dobra rada
1. opisz sobie słownie co dokładnie chcesz uzyskać w efekcie końcowym zapytania. To ułatwi Ci potem pisanie selecta
2. używaj nazw tabel i kolumn tak by niosły jakąś zrozumiałą informację, to że ty wiesz co znajduje się w polu "pna" to nie znaczy, że ja mam o tym pojęcie.
3. nie jestem tego do końca pewny ale chyba nazwy powiatów w obrębie województw mogą się powtarzać, złączenie tabel "tabela_32" i "pna" może dać Ci nieprzewidywalne wyniki.

Ostatnio edytowany przez c_michal (2015-02-16 14:17:47)