Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PostgreSQL8.4] Crosstab... chi mi da una mano? lunghino...

1 view
Skip to first unread message

Peca's

unread,
Oct 10, 2009, 5:43:32 AM10/10/09
to
Salve a tutti,

mi sto rompendo il capo per scrivere una funzione in PG8.4 che
restituisca una tabella ben formattata per evitare di utilizzare codice PHP.
Vi illustro la struttura delle tabelle(ho riportato solo i campi
importanti):

Tables:
table_id serial PK
table_name varchar(50) unique

Fields:
field_id serial PK
field_name varchar(50) unique

Table_fields:
table_field_id serial PK
table_id FK(tables.table_id)
field_id FK(field.field_id)

Unique(table_id,field_id)

Codes:
code_id serial PK
code_name varchar(50) unique

Table_values:
table_value_id serial PK
code_id FK(codes.code_id)
table_fields_id FK(table_fields.table_field_id)
value varchar(50)


Ora io vorrei creare una view che in realtᅵ richiama poi la funzione
dove passato il "table_id" mi restituisse una struttura con un numero
variabile di colonne derivante dalla tabella "Table_fields".

Es:
id serial PK
code_name varchar
table_name vachar
field1
field2
field3
...
...
...
fieldN

Il numero dei fields varia quindi da tabella a tabella per un numero
pari alle relazioni della tabella passata con i fields. Il crossTab mi
serve perchᅵ io non li voglio come record ma tutti i campi dell'ultimo
esempio dovranno essere i nomi delle colonne e il valore dovrᅵ essere
riportato come record.

esempio "f_crosstab_value(table_id)":

table_value_id| code_name | table_name | colore | peso | forma | ...
1 | pomodori | verdura | 5 | 100 | rotonda | ...
2 | insalata | verdura | | 50 | varia | ...

I valori sono a titolo di esempio.
Viene da se che ogni "table_name" avrᅵ nomi prodotto differenti e
proprietᅵ(fields) differenti con relative specifiche. Per quei codici
che non hanno valore, siccome la tabella avrᅵ comunque per tutti i
record lo stesso numero di colonne, lascerᅵ il campo vuoto o con null.
Inoltre la struttura permette di aggiungere proprietᅵ nuove senza
stravolgere le tabelle fisiche. Il vantaggio di creare una funzione ᅵ
abbastanza chiaro. Il DB diventa accessibile da qualsiasi progamma senza
dover riscrivere codice in diversi linguaggi ad es.

Qualcuno mi puᅵ aiutare a scrivere questa funzione?

Grazie!!!

0 new messages