Pregunta

Ok, aquí estaba mi pregunta original;

La tabla uno contiene

ID|Name  
1  Mary  
2  John  

La tabla dos contiene

ID|Color  
1  Red  
1  Blue
2  Blue  
2  Green  
2  Black  

quiero terminar con es

ID|Name|Red|Blue|Green|Black  
1  Mary Y   Y  
2  John     Y     Y     Y

Parece que debido a que hay 11 valores únicos para el color y miles y miles de registros en la tabla uno, no existe una "buena" manera de hacer esto.Entonces, otras dos preguntas.

¿Existe una forma eficiente de realizar consultas para obtener este resultado?Luego puedo crear una tabla cruzada en mi aplicación para obtener el resultado deseado.

ID|Name|Color  
1  Mary  Red  
1  Mary  Blue  
2  John  Blue  
2  John  Green  
2  John  Black

Si quisiera limitar la cantidad de registros devueltos, ¿cómo podría hacer una consulta para hacer algo como esto?

Where ((color='blue') AND (color<>'red' OR color<>'green'))

Entonces, usando el ejemplo anterior, volvería

ID|Name|Color  
1  Mary  Blue  
2  John  Blue  
2  John  Black

Me conecto a tablas de Visual FoxPro a través de ADODB para usar SQL.¡Gracias!

¿Fue útil?

Solución

A partir de su pregunta anterior y consultar contra una tabla VFP, puede obtener sus resultados mediante la siguiente consulta calificada de VFP ...tabla cruzada completa

select
      N.ID,
      N.Name,
      MAX( IIF( C.Color = "Red", "Y", " " )) Red,
      MAX( IIF( C.Color = "Blue", "Y", " " )) Blue,
      MAX( IIF( C.Color = "Green", "Y", " " )) Green,
      MAX( IIF( C.Color = "Black", "Y", " " )) Black
   FROM
      C_Names N,
      Colors C
   WHERE
      N.ID = C.ID
   GROUP BY 
      N.ID,
      N.Name

Luego, como tiene otros "colores", simplemente copie el MAX(IIF()) para ese color respectivo y tenga la columna como nombre de la columna de resultado...seguir el modelo.El único problema es que si tiene una ortografía diferente de los colores que distingue entre mayúsculas y minúsculas, es posible que necesite UPPER( C.Color ) = "RED" (o similar para otros colores)

Otros consejos

Se busca hacer una consulta de referencias cruzadas. Se podría tratar de utilizar el asistente de consulta de referencias cruzadas:
http://msdn.microsoft.com/en- es / library / aa979431% 28VS.71% 29.aspx

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