Pergunta

Ok, aqui foi a minha pergunta original;

uma tabela contém

ID|Name  
1  Mary  
2  John  

Table dois contém

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

Eu quero acabar com

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

Parece que porque existem 11 valores únicos para a cor e 1000, sobre 1000, de registros em uma tabela que não existe maneira 'bom' para fazer isso. Então, duas outras questões.

Existe uma maneira eficiente de consulta para obter este resultado? Posso, então, criar uma tabela de referência cruzada na minha candidatura para obter o resultado desejado.

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

Se eu quisesse limitar o número de registros retornados como eu poderia fazer uma consulta para fazer algo assim?

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

Assim, usando o exemplo acima Eu, então, voltar

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

eu ligar para tabelas do Visual FoxPro via ADODB para uso SQL. Obrigado!

Foi útil?

Solução

Desde a sua pergunta anterior, e consulta contra uma tabela VFP, você pode obter os seus resultados por a seguinte consulta qualificado VFP ... cross-guia completo

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

Então, como você tem outras "cores", basta copiar o MAX (IIF ()) para que respectiva cor e ter a coluna como o nome da coluna resultado ... seguir o padrão. Apenas questão é se você tiver diferente ortografia caso sensitve das cores, então você pode precisar de UPPER (C.Color) = "RED" (ou similar para outras cores)

Outras dicas

Você está olhando para fazer uma consulta de referência cruzada. Você poderia tentar usar o assistente de consulta de referência cruzada:
http://msdn.microsoft.com/en- us / library / aa979431% 28VS.71% 29.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top