Question

Ok, voici était ma première question;

Tableau contient un

ID|Name  
1  Mary  
2  John  

Tableau deux contient

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

Je veux retrouver avec

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

Il semble que parce qu'il ya 11 valeurs uniques pour sa couleur et 1000 sur 1000 de dossiers dans le tableau qui il n'y a aucun moyen « bon » pour le faire. Ainsi, deux autres questions.

Y at-il un moyen efficace de requête pour obtenir ce résultat? Je peux alors créer un tableau croisé dans ma demande pour obtenir le résultat souhaité.

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

Si je voulais limiter le nombre d'enregistrements renvoyés comment pourrais-je faire une requête pour faire quelque chose comme ça?

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

Donc, en utilisant l'exemple ci-dessus, je puis revenir

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

Je me connecte aux tables Visual FoxPro via ADODB utiliser SQL. Merci!

Était-ce utile?

La solution

A partir de votre question avant et interroger une table VFP, vous pouvez obtenir vos résultats par la requête qualifiée VFP suivante ... La complète onglet

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

Alors, que vous avez d'autres « couleurs », il suffit de copier le MAX (IIF ()) pour cette couleur respective et ont la colonne comme nom de colonne de résultat ... suivre le modèle. Le seul problème est que si vous avez une orthographe différente de sensibles à la casse des couleurs, vous devrez peut-être UPPER (C.Color) = « RED » (ou similaire pour d'autres couleurs)

Autres conseils

Vous cherchez à faire une requête de tableau croisé. Vous pouvez essayer d'utiliser l'assistant de requête de tableau croisé:
http://msdn.microsoft.com/en- nous / bibliothèque / aa979431% 28VS.71% 29.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top