Newsgroup: it.comp.appl.access
Titolo: combinazioni

Per a97 su NT
come posso calcolare le possibili combinazioni  tra i record di una tabella
?
mi spiego meglio
ammettiamo di avere una tabella che contiene i record
a,b,c,d......
come calcolo le possibili combinazioni in base 2
in base 3 o 4 ??
sembra una cosa da lotto ma giuro non č cosě....
bye ..........Grazie a tutti

 sembra una cosa da lotto ma giuro non è così....
Non sara' una cosa da lotto ma e' cosi'.
comunque e' molto facile, immaginando che tu per "in base 2" intenda dire
"presi a 2 a 2", ottieni:
-sia n il numero totale di elementi
-sia k il numero di elementi che intendi prendere (presi a k a k)
-immaginiamo che a te interessino le combinazioni e non le permutazioni (non
ti interessa quindi in che ordine sono)
-sia x il numero di combinazioni che devi calcolare
x = n! / ((n-k)! * k!)
facile no?
Sib

Sib ha scritto:


Non è che invece del numero di combinazioni, lui voleva una query che
restituisca aa, ab, ac, ba, bb, bc, aaa, aab, abc, ecc...?
(cerco di leggere tra le righe... me l'ha insegnato un amico! :->)
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 bye ..........Grazie a tutti
se ho capito quello che chiedi (vedi namor)
e' uno dei requisiti base dell'SQL. Si chiama prodotto cartesiano che in sql va
sotto il nome di join
select a.c1,b.c1 from a b
select a.c1,b.c1,c.c1 from a,b,c
etc.....
se la tabella e' una sola si usa sempre la stessa (self join)
select a1.c1, a2.c1, a3.c1 from a as a1,a as a2, a as a3 
ovviamente in campana con i risultati una tabella di 100 record in base 3 
restituisce 1.000.000 di record
--
a.cara 
Togli qualcosa dall'email

 ha scritto nel messaggio
news:bi1qan$9id$1...@news.newsland.it...


 sorry ho postato di fretta e mi sono spiegato male
E hai anche postato male, visto che non scrivi correttamente DOPO il
quoting!!!
Antonio

 qualcuno ha già provato?????
Fai una query con prodotto cartesiano, come spiegato da Alessandro Cara.
Ciao.


 hai ragione ma ho il fiato sul collo sai darmi indicazioni sul
suggerimento di namor riguardo una query sul prodotto cartesiano ?????
grazie e scusate il casino...

 ha scritto nel messaggio
news:3F44738C...@blunet.it...

purtroppo sono ot con sql pensavo ad una funzione o formula magica ma non ho
trovato nulla , mi guarderò un po di sql ...grazie a Tutti

 select a1.c1, a2.c1, a3.c1 from a as a1,a as a2, a as a3
Supponi che la tua tabella si chiami "nometabella" e il campo "nomecampo",
la query sarà circa così:
SELECT [tabella1].[nomecampo] & [tabella2].[nomecampo] &
[tabella3].[nomecampo] AS Permutazioni
FROM nometabella AS tabella1, nometabella AS tabella2, nometabella AS
tabella3;


 ho provato il tuo esempio paripari ma mi da l'errore "impossibile trovare
la tabella o query nometabella
eppure ho copiato l'istruzione e composto il db come descritto, sono proprio
OT.
grazie per la pazienza.

 grazie per la pazienza.
Quella query funziona bene, l'ho provata.
Ovviamente al posto di "nometabella" dovrai mettere il nome della tabella
che usi tu, e al posto di "nomecampo" dovrai mettere il nome del campo della
tabella che contiene il testo di cui vuoi le permutazioni.
Le parole "tabella1" "tabella2" "tabella3" e "Permutazioni" invece li puoi
lasciare scritti letteralmente così perchè sono solo degli alias.
Namor

 Namor
Bravo namor, stavolta ci hai preso tu!
Sib
--
http://www.sitocomune.com
http://digilander.iol.it/syb
 (a vostro rischio e pericolo)

 qualcuno ha già provato?????
cut
Se vai a cercare nei post di qualche anno fa (forse addirittura su icda)
troverai una mia disputa con un certo amato (se non ricordo male) nella
quale ho postato il codice per lo sviluppo di combinazioni di n elementi
presi a k a k.
ora sul mio pc non lo trovo, ma forse su deja...
Sib

 CBA
Guarda, ho trovato il tempo di riflettere sul tuo problema, ne e' venuto
fuori questo modulo (che potrai chiamare "Permutazioni") che fa il calcolo,
a te resta da adattare l'output alle tue esigenze:
##############################################################
Option Compare Database
Option Explicit
Function Permuta(Parola() As String) As String
Dim intI, intJ, intN, intL As Integer
Dim stPrima, stDopo As String
Dim stParola() As String
    intL = Len(Parola(1))
    intN = Fact(intL - 1)
    ReDim stParola(intN)
    stParola(1) = Right(Parola(1), intL - 1)
    If Len(stParola(1)) > 1 Then Permuta stParola()
    For intJ = 1 To intL
        For intI = 1 To intN
            stPrima = Left(stParola(intI), intJ - 1)
            stDopo = Right(stParola(intI), intL - intJ)
            Parola(intJ + (intI - 1) * intL) = stPrima & Left(Parola(1), 1)
& stDopo
        Next intI
    Next intJ
End Function
Function Fact(intI As Integer) As Long
Dim intJ As Integer
Fact = 1
    For intJ = 1 To intI
        Fact = Fact * intJ
    Next intJ
End Function
Function CalcPerm(ByVal a As String) As String
Dim p() As String
Dim i As Integer
    If Len(a) > 7 Then
        MsgBox "Parola troppo lunga!", vbCritical, "Attenzione"
        Exit Function
    End If
    ReDim p(Fact(Len(a)))
    p(1) = a
    Permuta p()
    For i = 1 To Fact(Len(a))
        Debug.Print p(i)
    Next i
End Function
###############################################################
cut
Dimenticavo, per capire come funziona, apri la finestra "Immediata" e
scrivi:
calcperm "ABCD"
Non accetta piu' di 7 caratteri se no va in over e oltretutto avrebbe poco
senso calcolare migliaia e migliaia di combinazioni per una casella di
riepilogo.
Sib
---------------------
-- http://www.sitocomune.comhttp://
digilander.iol.it/syb
 (a vostro rischio e
pericolo)