Pregunta

No estoy muy seguro de si esto es posible, o cae en la categoría de las tablas dinámicas, pero pensé que había que ir a los profesionales a ver.

Tengo tres tablas:Tarjeta de Propiedad, y CardProperty.Ya que las tarjetas no tienen las mismas propiedades, y a menudo con varios valores para la misma propiedad, me decidí a utilizar la mesa de la unidad enfoque para almacenar datos, en lugar de tener una gran estructura de columnas en mi tarjeta de la mesa.

La tabla de propiedades es un básico de palabras clave/tipo de valor de la tabla.Así que tiene la palabra clave ATK y el valor asignado.Hay otra propiedad llamada SpecialType que una tarjeta puede tener varios valores, como "Sycnro" y "OSCURO"

Lo que me gustaría hacer es crear una vista o un procedimiento almacenado que me da la Tarjeta de Identificación, Tarjeta de Nombre, y todos los bienes palabras clave asignado a la tarjeta como columnas, y sus valores en el conjunto de resultados de una tarjeta de crédito especificada.Idealmente, me gustaría tener un conjunto de resultados como:

ID  NAME                   SPECIALTYPE
1   Red Dragon Archfiend   Synchro
1   Red Dragon Archfiend   DARK
1   Red Dragon Archfiend   Effect

y yo podría recuento de los resultados de mi de esa manera.

Supongo que incluso los más pulidos sería simplemente concatenar las propiedades del conjunto en función de su palabra clave, lo que podría generar un conjunto de resultados como:

1  Red Dragon Archfiend   Synchro/DARK/Effect

..pero no sé si eso es factible.

Me ayudan a stackoverflow Kenobi!Tú eres mi única esperanza.

Otros consejos

Pero los valores son los valores se mantienen en columnas separadas y ha de saber que su "tipos especiales" una cabeza de tiempo:
Consulta SQL para comparar las ventas de productos por mes

De lo contrario me gustaría hacer esto con el cursor en un procedimiento almacenado o una preforma de la transformación de los negocios o de la capa de presentación.

Puñalada en sql si usted sabe todos los casos:

Select
    ID,NAME
    ,Synchro+DARK+Effect --  add a some substring logic to trim any trailing /'s
from
    (select
        ID
        ,NAME
        --may need to replace max() with min().
        ,MAX(CASE SPECIALTYPE WHEN "Synchro" THEN SPECIALTYPE +"/" ELSE "" END) Synchro
        ,MAX(CASE SPECIALTYPE WHEN "DARK" THEN SPECIALTYPE +"/" ELSE "" END) DARK
        ,MAX(CASE SPECIALTYPE WHEN "Effect" THEN SPECIALTYPE ELSE "" END) Effect
    from
        table
    group by
       ID
       ,NAME) sub1

No colapsar por la concatenación para el almacenamiento de los registros relacionados en la base de datos.No es exactamente de las mejores prácticas.

Lo que usted describe es una tabla dinámica.El uso de tablas dinámicas duro.Te sugiero que evitarlos si es posible.

¿Por qué no acaba de leer en sus filas y proceso en la memoria?No suena como que vas a pasar muchas milisegundos haciendo esto...

Una opción es tener las Propiedades tienen un PropertyType, así:

table cards
integer ID | string name | ... (other properties common to all Cards)

table property_types
integer ID | string name | string format | ... (possibly validations)

table properties
integer ID | integer property_type_id | string name | string value
foreign key property_type_id references property_types.ID

table cards_properties
integer ID | integer card_id | integer property_id
foreign key card_id references cards.ID
foreign key property_id references propertiess.ID

De esa manera, cuando se desea establecer un nuevo valor de la propiedad, usted puede validar por su tipo.Un tipo puede ser "SpecialType" con una enumeración de valores.

Tengo un tipo de formato para mi tabla de propiedades, de esa manera sé cómo cast/evaluar cuando estoy tratando con un valor entero.No estaba seguro de si era pertinente a esta cuestión o no.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top