Osvaldo Kussama escreveu:
> Em 15/07/08, Xisberto<[EMAIL PROTECTED]> escreveu:
>> Olá a todos.
>>
>> Tenho pouca experiência com SQL em geral, estou querendo aprender. Acabei de
>> entrar na lista porque não consigo realizar uma consulta. Não sei nem como
>> procuro no google pela solução do problema (não sei que palavras-chave
>> usar).
>>
>> Explicando melhor:
>>
>> Estou fazendo um banco para catalogar coleções de cartas de um jogo. Neste
>> jogo existem 5 cores e cada carta pode ter entre 0 e 5 cores. Para
>> representar isso, após alguma pesquisa, fiz 3 tabelas:
>>
>> _____
>> mtg_collection=# \d cards
>>                                     Table "public.cards"
>>    Column   |          Type          |                      Modifiers
>> ------------+------------------------+------------------------------------------------------
>>  code       | integer                | not null default
>> nextval('cards_code_seq'::regclass)
>>  name       | character varying(100) | not null
>>  portuguese | character varying(100) |
>> Indexes:
>>     "cards_pkey" PRIMARY KEY, btree (code)
>>     "cards_name_key" UNIQUE, btree (name)
>>     "cards_portuguese_key" UNIQUE, btree (portuguese)
>>
>> _____
>> mtg_collection=# \d colors
>>                                    Table "public.colors"
>>    Column   |         Type          |                       Modifiers
>> ------------+-----------------------+-------------------------------------------------------
>>  code       | integer               | not null default
>> nextval('colors_code_seq'::regclass)
>>  name       | character varying(15) | not null
>>  portuguese | character varying(15) | not null
>> Indexes:
>>     "colors_pkey" PRIMARY KEY, btree (code)
>>     "colors_name_key" UNIQUE, btree (name)
>>     "colors_portuguese_key" UNIQUE, btree (portuguese)
>>
>> _____
>> mtg_collection=# \d colors_for_card
>>                           Table "public.colors_for_card"
>>  Column |  Type   |                           Modifiers
>> --------+---------+---------------------------------------------------------------
>>  code   | integer | not null default
>> nextval('color_for_card_code_seq'::regclass)
>>  color  | integer |
>>  card   | integer |
>> Indexes:
>>     "color_for_card_pkey" PRIMARY KEY, btree (code)
>> Foreign-key constraints:
>>     "color_for_card_card_fkey" FOREIGN KEY (card) REFERENCES cards(code)
>>     "color_for_card_color_fkey" FOREIGN KEY (color) REFERENCES colors(code)
>>
>> Esta terceira tabela serve para relacionar as duas principais. Eu gostaria
>> de saber se existe como em uma única consulta sql retornar cara carta em uma
>> linha, listando todas as cores dela.
>>
>> Não precisa escrever o select aqui, gostaria de sugestões de sintaxe a usar
>> e de onde pesquisar sobre sintaxe sql.
>>
> 
> 
> Dê uma olhada no módulo contrib/tablefunc.
> Creio que a função crosstab é exatamente o que procura.
> http://www.postgresql.org/docs/8.3/interactive/tablefunc.html
> 


Complementando:
Aproveitando o mote da discussão sobre a preferência que se deve dar
ao uso de chaves naturais nas tabelas pergunto:
Por que utilizar estas chaves artificiais nestas tabelas?
Seu uso fornece algum ganho ou será justamente o contrário, isto é, 
apenas irão complicar suas queries?

Osvaldo

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a