<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Array w warunku zapytania]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=234&amp;type=atom"/>
	<updated>2009-06-14T20:05:51Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=234</id>
		<entry>
			<title type="html"><![CDATA[Odp: Array w warunku zapytania]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=988#p988"/>
			<content type="html"><![CDATA[[quote=rski]Ale i tak chyba najlepiej bedzie jak rozwalisz strukture bazy na trzy tabele.[/quote]

Masz rację, że tak będzie chyba najlepiej i najprościej. Całość i tak będzie "obsługiwana" przez skrypty php ale rozbicie na 3 tabele będzie  bardziej przejrzyste. Dodatkowe zapytanie i tak by musiało być niezależnie od tego czy są 2 tabele i tablica czy 3 tabele.
Dzięki za odpowiedź. :)]]></content>
			<author>
				<name><![CDATA[fault]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=927</uri>
			</author>
			<updated>2009-06-14T20:05:51Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=988#p988</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Array w warunku zapytania]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=987#p987"/>
			<content type="html"><![CDATA[Takie korzystanie z tabel to 'strzal w kolano' :). Mysle ze najlepiej zrobisz jak napiszesz wlasna funckje ktora bedzie reazlizowala ci takie przeszukiwanie. Co prawda postgres ma operator '<@'  - 'zawiera sie w ' i mozesz sprobowac go wykorzystac. Ale i tak chyba najlepiej bedzie jak rozwalisz strukture bazy na trzy tabele.]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-06-14T08:49:46Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=987#p987</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Array w warunku zapytania]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=986#p986"/>
			<content type="html"><![CDATA[Witam !
Chcę stworzyć system wiadomości prywatnych ale z możliwością wysyłania do większej ilości osób a nie tylko jednej.
Mam taką tabelę :
                                     Table "public.wiadomosci"
   Column    |           Type           |                         Modifiers
-------------+--------------------------+-----------------------------------------------------------
 id_w        | bigint                   | not null default nextval('wiadomosci_id_w_seq'::regclass)
 w_od        | integer                  |
 w_do        | integer                  |
 adresaci    | integer[]                |
 czyja       | integer                  |
 data        | timestamp with time zone | default ('now'::text)::timestamp(6) with time zone
 przeczytana | boolean                  |
 pokaz       | boolean                  |
 wazna       | boolean                  |
 temat       | character varying(80)    |
 tresc       | text                     |
Indexes:
    "wiadomosci_pkey" PRIMARY KEY, btree (id_w)

W drugiej tabeli  mam użytkowników:

          Table "public.uzytkownicy"
  Column  |         Type          | Modifiers
----------+-----------------------+-----------
 id       | integer               |
 imie     | character varying(30) |
 nazwisko | character varying(45) |

Wydaję zapytanie:

select nazwisko,imie from uzytkownicy where id =any (select adresaci from wiadomosci where id_w=2);

Zwraca błąd :
ERROR:  operator does not exist: integer = integer[]
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

Natomiast coś takiego działa poprawnie :
select nazwisko,imie from uzytkownicy where id =any (ARRAY[1,12]);

Oczywiście mogę "wyrzucić" kolumnę adresaci z tabeli wiadomości jako osobną tabelę adresaci z id_w i id_uzytkownika i wykonać zapytanie :
select nazwisko,imie from uzytkownicy where id  in (select id_uzytkownika from adresaci where id_w=2);

Ale może ktoś wie jakie należy wydać zapytanie aby dziłało tylko z dwoma tabelami.
Proszę o odpowiedź]]></content>
			<author>
				<name><![CDATA[fault]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=927</uri>
			</author>
			<updated>2009-06-14T07:09:30Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=986#p986</id>
		</entry>
</feed>
