Select TOP in relazione con altra tabella

martedì 30 settembre 2008 - 08.57

denis.basei Profilo | Senior Member

Salve a tutti e buon martedì.
Devo aggiungere una query ad un tableadapter nella quale vorrei selezionare i primi 300 records della prima tabella (FileTest_CNC) e metterli in relazione con tutti i records della seconda tabella (FileRighe_CNC). Ho fatto un tentativo (vedi allegato) ma non ha avuto successo. Avete qualche suggerimento? Grazie
Denis B. - www.baseiengineering.com

Brainkiller Profilo | Guru

>Salve a tutti e buon martedì.
>Devo aggiungere una query ad un tableadapter nella quale vorrei
>selezionare i primi 300 records della prima tabella (FileTest_CNC)
>e metterli in relazione con tutti i records della seconda tabella
>(FileRighe_CNC). Ho fatto un tentativo (vedi allegato) ma non
>ha avuto successo. Avete qualche suggerimento? Grazie

Ciao,
che database usi se usi SQL Server puoi provare con una query di questo tipo:

SELECT TOP 300 * FROM TabellaA a JOIN TabellaB b ON a.campoID=b.campoID

Di solito in accoppiata con la TOP puoi usare anche una ORDER BY per ordinare i record in ordine crescente, decrescente sulla base del campo che stabilisce l'ordine esempio ID, una data, altro.
Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

lbenaglia Profilo | Guru

>Avete qualche suggerimento?

Ciao Denis,

Prova questa query:

WITH CTE_FileTest_CNC AS ( SELECT TOP(300) IDCarico, IDMacchina, IDProgramma FROM dbo.FileTest_CNC ) SELECT CTE.*, FR.* FROM CTE_FileTest_CNC AS CTE JOIN FileRighe_CNC AS FR ON CTE.IDCarico = FR.IDCarico AND CTE.IDMacchina = FR.IDMacchina AND CTE.IDProgramma = FR.IDProgramma;

Se il risultato che ti aspetti è differente da quello restituito, non postare un altro pdf ma i comandi DDL di CREATE TABLE delle due tabelle, alcune righe di esempio (INSERT INTO) ed il result set finale che vorresti ottenere.

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

denis.basei Profilo | Senior Member

Il problema è che devo selezionare i records della tabella b (FileRighe_CNC) relazionati con i primi 300 records della tabella a (FileTest_CNC). Nel tuo esempio, se non erro, la selezione mi restituisce a.
Denis B. - www.baseiengineering.com

lbenaglia Profilo | Guru

>Il problema è che devo selezionare i records della tabella b
>(FileRighe_CNC) relazionati con i primi 300 records della tabella
>a (FileTest_CNC).
E' quello che fa la mia query.

>Nel tuo esempio, se non erro, la selezione
>mi restituisce a.
"a"? Cos'è "a"?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

denis.basei Profilo | Senior Member

Lorenzo sei grande!
Una curiosità: la sintassi WITH seguita dalla (SELECT...) serve per creare una specie di sottotabella?


Grazie
Denis B. - www.baseiengineering.com

denis.basei Profilo | Senior Member

Scusa, facevo riferimento al post del collega.
Denis B. - www.baseiengineering.com

lbenaglia Profilo | Guru

>Una curiosità: la sintassi WITH seguita dalla (SELECT...) serve
>per creare una specie di sottotabella?

WITH è il comando per creare una Common Table Expression che può essere considerata una "vista temporanea" la cui esistenza è limitata all'esecuzione della query.
Per maggiori dettagli consulta il seguente paragrafo dei Books Online:
http://msdn.microsoft.com/en-us/library/ms175972.aspx

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5