Thread View: pl.comp.bazy-danych
5 messages
5 total messages
Started by Marek
Sun, 01 Feb 2015 22:03
PostgreSQL - symulowanie dodatkowych pól tabeli
Author: Marek
Date: Sun, 01 Feb 2015 22:03
Date: Sun, 01 Feb 2015 22:03
48 lines
1639 bytes
1639 bytes
Witam, Czy da się sformułować jakoś zapytanie SQL, które pozwoli na potraktowanie danych z 2 innych tabeli jako rozszerzenie SELECT * z bieżącej? Mam namyśli sytuacje następującą: CREATE TABLE t1 ( t1_id SERIAL PRIMARY KEY, poleA text, poleB text ); CREATE TABLE nazwy_pol ( nazwy_pol_id SERIAL PRIMARY KEY, nazwa varchar(50) ) CREATE TABLE wartosci_pol ( t1_id int4 REFERENCES t1 (t1_id), nazwy_pol_id int4 REFERENCES nazwy_pol (nazwy_pol_id), wartosc text ) Jeśli tabela t1 zawiera: 15, "aaa", "bbb" oraz jeśli tabela nazwy_pol zawiera rekordy: 1, poleC 2, poleD a tabela wartosci_pol zawiera: 15, 1, "ccc" 15, 2, "ddd" To chciałbym napisać SELECT *, który zwróci kolumny: t1_id=1 poleA=aaa poleB=bbb poleC=ccc poleD=ddd Czy jest na to jakaś metoda? -- Pozdrawiam, Marek
Re: PostgreSQL - symulowanie dodatkowych pól tabeli
Author: Adam Klobukowski
Date: Mon, 02 Feb 2015 06:13
Date: Mon, 02 Feb 2015 06:13
53 lines
2363 bytes
2363 bytes
W dniu niedziela, 1 lutego 2015 23:03:22 UTC+1 użytkownik Marek napisał: > Witam, > > Czy da się sformułować jakoś zapytanie SQL, które pozwoli na > potraktowanie danych z 2 innych tabeli jako rozszerzenie SELECT * z > bieżącej? Mam namyśli sytuacje następującą: > > CREATE TABLE t1 ( > t1_id SERIAL PRIMARY KEY, > poleA text, > poleB text > ); > > CREATE TABLE nazwy_pol ( > nazwy_pol_id SERIAL PRIMARY KEY, > nazwa varchar(50) > ) > > CREATE TABLE wartosci_pol ( > t1_id int4 REFERENCES t1 (t1_id), > nazwy_pol_id int4 REFERENCES nazwy_pol (nazwy_pol_id), > > wartosc text > ) > > Jeśli tabela t1 zawiera: > 15, "aaa", "bbb" > > oraz jeśli tabela nazwy_pol zawiera rekordy: > 1, poleC > 2, poleD > > a tabela wartosci_pol zawiera: > 15, 1, "ccc" > 15, 2, "ddd" > > To chciałbym napisać SELECT *, który zwróci kolumny: > t1_id=1 > poleA=aaa > poleB=bbb > poleC=ccc > poleD=ddd > > Czy jest na to jakaś metoda? > > > -- > Pozdrawiam, > Marek Pojedynczym zapytaniem, nie wydaje mi się, Da się natomiast napisać procedurę która to zrobi. AdamK
Re: PostgreSQL - symulowanie dodatkowych pól tabeli
Author: Lesiok
Date: Mon, 02 Feb 2015 06:45
Date: Mon, 02 Feb 2015 06:45
52 lines
2087 bytes
2087 bytes
W dniu 2015-02-01 o 23:03, Marek pisze: > Witam, > > Czy da się sformułować jakoś zapytanie SQL, które pozwoli na > potraktowanie danych z 2 innych tabeli jako rozszerzenie SELECT * z > bieżącej? Mam namyśli sytuacje następującą: > > CREATE TABLE t1 ( > t1_id SERIAL PRIMARY KEY, > poleA text, > poleB text > ); > > CREATE TABLE nazwy_pol ( > nazwy_pol_id SERIAL PRIMARY KEY, > nazwa varchar(50) > ) > > CREATE TABLE wartosci_pol ( > t1_id int4 REFERENCES t1 (t1_id), > nazwy_pol_id int4 REFERENCES nazwy_pol (nazwy_pol_id), > > wartosc text > ) > > Jeśli tabela t1 zawiera: > 15, "aaa", "bbb" > > oraz jeśli tabela nazwy_pol zawiera rekordy: > 1, poleC > 2, poleD > > a tabela wartosci_pol zawiera: > 15, 1, "ccc" > 15, 2, "ddd" > > To chciałbym napisać SELECT *, który zwróci kolumny: > t1_id=1 > poleA=aaa > poleB=bbb > poleC=ccc > poleD=ddd > > Czy jest na to jakaś metoda? > > Join na tabelach a potem funkcja crosstab. -- Pozdrawiam, Leszek KUBRAK
Re: PostgreSQL - symulowanie dodatkowych pól tabeli
Author: Marek
Date: Mon, 02 Feb 2015 10:22
Date: Mon, 02 Feb 2015 10:22
10 lines
1086 bytes
1086 bytes
W dniu 2015-02-02 o 07:45, Lesiok pisze: >> > Join na tabelach a potem funkcja crosstab. > O, dziękuję. To będzie rozwiązanie :-) -- Pozdrawiam, Marek
Re: PostgreSQL - symulowanie dodatkowych pól tabeli
Author: M.M.
Date: Mon, 02 Feb 2015 11:29
Date: Mon, 02 Feb 2015 11:29
54 lines
2625 bytes
2625 bytes
On Monday, February 2, 2015 at 7:13:46 AM UTC+1, Adam Klobukowski wrote: > W dniu niedziela, 1 lutego 2015 23:03:22 UTC+1 użytkownik Marek napisał: > > Witam, > > > > Czy da się sformułować jakoś zapytanie SQL, które pozwoli na > > potraktowanie danych z 2 innych tabeli jako rozszerzenie SELECT * z > > bieżącej? Mam namyśli sytuacje następującą: > > > > CREATE TABLE t1 ( > > t1_id SERIAL PRIMARY KEY, > > poleA text, > > poleB text > > ); > > > > CREATE TABLE nazwy_pol ( > > nazwy_pol_id SERIAL PRIMARY KEY, > > nazwa varchar(50) > > ) > > > > CREATE TABLE wartosci_pol ( > > t1_id int4 REFERENCES t1 (t1_id), > > nazwy_pol_id int4 REFERENCES nazwy_pol (nazwy_pol_id), > > > > wartosc text > > ) > > > > Jeśli tabela t1 zawiera: > > 15, "aaa", "bbb" > > > > oraz jeśli tabela nazwy_pol zawiera rekordy: > > 1, poleC > > 2, poleD > > > > a tabela wartosci_pol zawiera: > > 15, 1, "ccc" > > 15, 2, "ddd" > > > > To chciałbym napisać SELECT *, który zwróci kolumny: > > t1_id=1 > > poleA=aaa > > poleB=bbb > > poleC=ccc > > poleD=ddd > > > > Czy jest na to jakaś metoda? > > > > > > -- > > Pozdrawiam, > > Marek > > Pojedynczym zapytaniem, nie wydaje mi się, Da się natomiast napisać procedurę która to zrobi. To źle Ci się nie wydaje.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads