Domanda

Ok, ecco la mia domanda iniziale;

La tabella uno contiene

ID|Name  
1  Mary  
2  John  

La tabella due contiene

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

Voglio finire con è

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

Sembra che, poiché ci sono 11 valori univoci per il colore e migliaia di record nella tabella uno, non esista un modo "buono" per farlo.Allora, altre due domande.

Esiste un modo efficiente per eseguire una query per ottenere questo risultato?Posso quindi creare una tabella incrociata nella mia applicazione per ottenere il risultato desiderato.

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

Se volessi limitare il numero di record restituiti, come potrei eseguire una query per fare qualcosa del genere?

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

Quindi, usando l'esempio sopra, tornerei indietro

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

Mi collego alle tabelle Visual FoxPro tramite ADODB per utilizzare SQL.Grazie!

È stato utile?

Soluzione

Dalla tua domanda precedente e interrogando su una tabella VFP, è possibile ottenere i risultati mediante la seguente query qualificata VFP ...tabella incrociata completata

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

Quindi, poiché hai altri "colori", copia semplicemente MAX( IIF()) per quel rispettivo colore e imposta la colonna come nome della colonna dei risultati...Segui lo schema.L'unico problema è che se hai un'ortografia diversa con distinzione tra maiuscole e minuscole dei colori, potrebbe essere necessario UPPER( C.Color ) = "RED" (o simile per altri colori)

Altri suggerimenti

Si sta cercando di fare una query a campi incrociati. Si potrebbe provare a utilizzare la Creazione guidata Query a campi incrociati:
http://msdn.microsoft.com/en- us / library / aa979431% 28VS.71% 29.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top