<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Podzapytanie, grupowanie i case i ALIAS]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=451&amp;type=atom"/>
	<updated>2010-06-14T16:29:56Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=451</id>
		<entry>
			<title type="html"><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2082#p2082"/>
			<content type="html"><![CDATA[No ale gdzieś ty ten Red napisał miało być w zapytaniu zewnętrznym nie wewnętrznym
[code]
SELECT "public"."Egzemplarze"."Id_egzemplarza","Id_ksiazki","Tytul", "Wydawnictwo", ARRAY_TO_STRING("Autorzy", ', ') as "Autorzys", "Mozna_wypozyczyc",
case when (
SELECT COUNT("Id_wypozyczenia")
FROM "public"."Egzemplarze"
LEFT JOIN "public"."Wypozyczenia"
ON "public"."Egzemplarze"."Id_egzemplarza" = "public"."Wypozyczenia"."Id_egzemplarza"
WHERE "public"."Wypozyczenia"."Id_egzemplarza" = "Red"."Id_egzemplarza"
GROUP BY "public"."Egzemplarze"."Id_egzemplarza"
) > 0 then 'Zajeta' else 'Wolna' end as "Dostepnosc" 
FROM "public"."Egzemplarze" as "Red"
INNER JOIN "public"."Ksiazki"
ON "Red"."Id_ksiazki" = "public"."Ksiazki"."Id"
[/code]
i zamiast "public"."Red"."Id_ksiazki" wpisz "Red"."Id_ksiazki" (wcześniej sie pomyliłem wpisujac zapytanie)]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-06-14T16:29:56Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2082#p2082</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2081#p2081"/>
			<content type="html"><![CDATA[Pobieram egzemplarze. Nie każdy posiada wypożyczenie więc po to jest LEFT JOIN - jeśli będzie 0 wypożyczeń to chce 'Nie' jeśli więcej to 'Tak'. Potem dam tam warunek - nie chce liczyć wszystkiego - ale to nie ważne

KURDE. NAWET TO nie działa:

[code]
SELECT "public"."Red"."Id_egzemplarza",
(
SELECT COUNT("Id_wypozyczenia") 
FROM "public"."Wypozyczenia"
WHERE "public"."Wypozyczenia"."Id_egzemplarza" = "public"."Red"."Id_egzemplarza"
GROUP BY "public"."Wypozyczenia"."Id_egzemplarza"
) as "Dostepnosc" 
FROM "public"."Egzemplarze" as "Red"
[/code]


Jest coś nie tak z przestrzenią nazw. A poza tym po cholere te " " i public? Nie można tego jakoś wyłączyć?

[code]
ERROR:  invalid reference to FROM-clause entry for table "Red"
HINT:  There is an entry for table "Red", but it cannot be referenced from this part of the query.
[/code]

PODzapytanie działa poprawnie. Nadzayptanie działa poprawnie. COś jest nie tak z ALIASEM


BAZA TO PostgreSQL 8.1.9]]></content>
			<author>
				<name><![CDATA[Miszka]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1119</uri>
			</author>
			<updated>2010-06-14T14:18:52Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2081#p2081</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2080#p2080"/>
			<content type="html"><![CDATA[witam serdecznie;

poniewaz Twoje zapytanie sklada sie z kilku czesci trzeba je przeanalizowac po kolei;
poniewaz kazdy robi to po swojemu moge Ci zaproponowac moj sposob; zatem
masz dwa razy klauzule FROM; zacznijmy od pierwszej z nich czyli:
[code]
SELECT COUNT("Id_wypozyczenia")
FROM "public"."Egzemplarze"LEFT JOIN "public"."Wypozyczenia"
ON "public"."Egzemplarze"."Id_egzemplarza" = "public"."Wypozyczenia"."Id_egzemplarza"
[/code]
otrzymujesz jakas wartosc i nie ma komunikatu o blędzie? jezeli tak to podaj ja prosze i/lub komunikat o bledzie;
na marginesie zastanawiam sie dlaczego uzyles lewozlaczenia?
pozdrawiam]]></content>
			<author>
				<name><![CDATA[sulavix]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=972</uri>
			</author>
			<updated>2010-06-14T14:05:17Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2080#p2080</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2079#p2079"/>
			<content type="html"><![CDATA[1. To jak bez egzemplarzy i on - grupować? (czy postgre łyknie pole do grupowanie które nie jest kluczem głównym?) - po zmianie bez on błąd taki sam
2. To jak przenieść alias przed nawias żeby go łykną?]]></content>
			<author>
				<name><![CDATA[Miszka]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1119</uri>
			</author>
			<updated>2010-06-14T13:27:31Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2079#p2079</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2078#p2078"/>
			<content type="html"><![CDATA[Witam serdecznie
w lewozlaczeniu masz warunek po klauzuli ON:
[code]
"public"."Egzemplarze"."Id_egzemplarza" = "public"."Wypozyczenia"."Id_egzemplarza"
[/code]
a zaraz po ty dajesz inny warunek po klauzuli WHERE
[code]
"public"."Wypozyczenia"."Id_egzemplarza" = "public"."Red"."Id_egzemplarza"
[/code]
ale tu podajesz Red i silnik nie rozumie (podaje Ci to w HINT); gdyby Red zamienic na Wypozyczenia pewnie bylo by dobrze ale jest to dokladnie powtorzenie warunku z lewozlaczenia i nie ma to sensu jak mi sie zdaje; a alias
[code] 
...
"public"."Egzemplarze" as "Red"
...
[/code]
dajesz po nawiasach spinajacych jedna czesc zapytania
tyle z mojej strony na poczatek
pozdrawiam]]></content>
			<author>
				<name><![CDATA[sulavix]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=972</uri>
			</author>
			<updated>2010-06-14T12:24:34Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2078#p2078</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2077#p2077"/>
			<content type="html"><![CDATA[Witam, rzeczywiście to ma sens : po zmianie:

[code]
SELECT "public"."Egzemplarze"."Id_egzemplarza","Id_ksiazki","Tytul", "Wydawnictwo", ARRAY_TO_STRING("Autorzy", ', ') as "Autorzys", "Mozna_wypozyczyc",
case when (
SELECT COUNT("Id_wypozyczenia")
FROM "public"."Egzemplarze"
LEFT JOIN "public"."Wypozyczenia"
ON "public"."Egzemplarze"."Id_egzemplarza" = "public"."Wypozyczenia"."Id_egzemplarza"
WHERE "public"."Wypozyczenia"."Id_egzemplarza" = "public"."Red"."Id_egzemplarza"
GROUP BY "public"."Egzemplarze"."Id_egzemplarza"
) > 0 then 'Zajeta' else 'Wolna' end as "Dostepnosc" 
FROM "public"."Egzemplarze" as "Red"
INNER JOIN "public"."Ksiazki"
ON "public"."Red"."Id_ksiazki" = "public"."Ksiazki"."Id"
[/code]


Ale błąd:
[code]
ERROR:  invalid reference to FROM-clause entry for table "Red"
HINT:  There is an entry for table "Red", but it cannot be referenced from this part of the query.
[/code]

Nie może się tam dostać..?]]></content>
			<author>
				<name><![CDATA[Miszka]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1119</uri>
			</author>
			<updated>2010-06-14T11:26:01Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2077#p2077</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2076#p2076"/>
			<content type="html"><![CDATA[Jeśli już potrzebny ci ten alias to odwołaj się do niego zamiast do tabeli
[code]
FROM "public"."Egzemplarze" as "Red"
INNER JOIN "public"."Ksiazki"
ON "public"."Red"."Id_ksiazki" = "public"."Ksiazki"."Id"
[/code]]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-06-14T05:10:42Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2076#p2076</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2075#p2075"/>
			<content type="html"><![CDATA[Witam posiadam takie oto zapytanie:

[code]
SELECT "public"."Egzemplarze"."Id_egzemplarza","Id_ksiazki","Tytul", "Wydawnictwo", ARRAY_TO_STRING("Autorzy", ', ') as "Autorzys", "Mozna_wypozyczyc",
case when (
SELECT COUNT("Id_wypozyczenia")
FROM "public"."Egzemplarze"
LEFT JOIN "public"."Wypozyczenia"
ON "public"."Egzemplarze"."Id_egzemplarza" = "public"."Wypozyczenia"."Id_egzemplarza"
WHERE "public"."Wypozyczenia"."Id_egzemplarza" = "Red"."Id_egzemplarza"
GROUP BY "public"."Egzemplarze"."Id_egzemplarza"
) > 0 then 'Zajeta' else 'Wolna' end as "Dostepnosc" 
FROM "public"."Egzemplarze" as "Red"
INNER JOIN "public"."Ksiazki"
ON "public"."Egzemplarze"."Id_ksiazki" = "public"."Ksiazki"."Id"
[/code]

Niestety wszystkie te cudzysłowy i słowa public są wymagane i w phpPgAdmin w zapytaniach i zapytaniach SQL poprzez PHP. Zapytanie jest najpewniej poprawne, lecz wyskakuje błąd przy samym aliasie - as "Red"

[code]
Błąd SQL:

ERROR:  invalid reference to FROM-clause entry for table "Egzemplarze"
HINT:  Perhaps you meant to reference the table alias "Red".
[/code]

Zapytanie główne wyświetla rekordy z egzemplarzy (podstawowe) a podzapytanie ma liczyć ile wypożyczeń jest w tej chwili dla danego egzemplarza z zapytania głównego - na tej podstawie case na 0 i 1

Proszę o pomoc :\]]></content>
			<author>
				<name><![CDATA[Miszka]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1119</uri>
			</author>
			<updated>2010-06-14T02:15:14Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2075#p2075</id>
		</entry>
</feed>
