<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Podzapytanie, grupowanie i case i ALIAS]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=451</link>
		<description><![CDATA[Najświeższe odpowiedzi w Podzapytanie, grupowanie i case i ALIAS.]]></description>
		<lastBuildDate>Mon, 14 Jun 2010 16:29:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2082#p2082</link>
			<description><![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)]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 14 Jun 2010 16:29:56 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2082#p2082</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2081#p2081</link>
			<description><![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]]></description>
			<author><![CDATA[dummy@example.com (Miszka)]]></author>
			<pubDate>Mon, 14 Jun 2010 14:18:52 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2081#p2081</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2080#p2080</link>
			<description><![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]]></description>
			<author><![CDATA[dummy@example.com (sulavix)]]></author>
			<pubDate>Mon, 14 Jun 2010 14:05:17 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2080#p2080</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2079#p2079</link>
			<description><![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ą?]]></description>
			<author><![CDATA[dummy@example.com (Miszka)]]></author>
			<pubDate>Mon, 14 Jun 2010 13:27:31 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2079#p2079</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2078#p2078</link>
			<description><![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]]></description>
			<author><![CDATA[dummy@example.com (sulavix)]]></author>
			<pubDate>Mon, 14 Jun 2010 12:24:34 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2078#p2078</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2077#p2077</link>
			<description><![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ć..?]]></description>
			<author><![CDATA[dummy@example.com (Miszka)]]></author>
			<pubDate>Mon, 14 Jun 2010 11:26:01 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2077#p2077</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2076#p2076</link>
			<description><![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]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 14 Jun 2010 05:10:42 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2076#p2076</guid>
		</item>
		<item>
			<title><![CDATA[Podzapytanie, grupowanie i case i ALIAS]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2075#p2075</link>
			<description><![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 :\]]></description>
			<author><![CDATA[dummy@example.com (Miszka)]]></author>
			<pubDate>Mon, 14 Jun 2010 02:15:14 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2075#p2075</guid>
		</item>
	</channel>
</rss>
