Newsgroup: it.comp.appl.access
Titolo: Pater et filius...

Ho un elenco di nomi di figlio con il relativo padre.
Devo analizzare l'elenco ed ottenere due liste:
1) Ii nomi di figlio UGUALI per tutti i padri.
2) I nomi di figlio NON UGUALI per tutti i padri.
Es.: (le lettere sono i nomifiglio)
A, Mario
B, Mario
C, Mario
A, Luigi
B, Luigi
B, Andrea
C, Andrea
Devo ottenere:
:Lista 1)
B, Mario
B, Luigi
B, Andrea
:Lista 2)
A, Mario
A, Luigi
C, Mario
C, Andrea
Siccome i due elenchi possono essere molto lunghi voglio evitare di scorrere
i padri n volte quanti sono i figli (troppo facile senno'!:-)
Sarebbe tutto molto semplice da fare se riuscissi ad avere un recordset
cosi' fatto:
A, Mario
A, Luigi
BUCO, Andrea
B, Mario
B, Luigi
B, Andrea
C, Mario
BUCO, Luigi
C, Andrea
A quel punto basterebbe scorrere il recordset una sola volta e beccare i
buchi.
Posso anche fare due query, una per prendere in nomi dei figli ed una per
quelli dei padri. Solo che non riesco  a trovare un modo per combinare i due
risultati nel modo che ho appena esposto.
Quello che non posso fare e': query nidificate e select di query (sono in
ASP).
Saluti.
Luciano
(DOC)

 ha scritto nel messaggio
news:9h4id0$bpm6c$1...@ID-86073.news.dfncis.de...

Se la tabella si chiama Tabella1 e i due campi si chiamano Figli e Padri,
prima mi farei una query di raggruppamento chiamata Query1 e che abbia
questo codice SQL:
SELECT Tabella1.Padri
FROM Tabella1
GROUP BY Tabella1.Padri;
Quindi il primo elenco lo otterrei con una query che ha questo codice SQL:
SELECT Tabella1.Figli, Tabella1.Padri
FROM Tabella1
WHERE (((DCount("[Padri]","Tabella1","Figli=" & Chr$(34) & [Figli] &
Chr$(34)))=DCount("[Padri]","Query1")))
ORDER BY Tabella1.Figli, Tabella1.Padri;
ed il secondo elenco lo otterrei con una query che ha questo codice SQL:
SELECT Tabella1.Figli, Tabella1.Padri
FROM Tabella1
WHERE (((DCount("[Padri]","Tabella1","Figli=" & Chr$(34) & [Figli] &
Chr$(34)))<>DCount("[Padri]","Query1")))
ORDER BY Tabella1.Figli, Tabella1.Padri;
Ciao, Roberto

 ha scritto nel messaggio
news:OmtZ6.26390$8R5.7...@news.infostrada.it...
[CUT]
Per ottenere il terzo recordset in una tabella temporanea chiamata Tabella2
con la seguemte struttura:
Id            Contatore e chiave primaria
Figli         Testo
Padri       Testo
Non mi viene in mente che questa soluzione.
Creare una query di raggruppamento chiamata Query1 e che abbia questo codice
SQL:
SELECT Tabella1.Padri
FROM Tabella1
GROUP BY Tabella1.Padri;
Creare una query di raggruppamento chiamata Query2 e che abbia questo codice
SQL:
SELECT Tabella1.Figli
FROM Tabella1
GROUP BY Tabella1.Figli;
Popolare Tabella2 con il seguente codice VBA:
Dim db As Database, rs1 As Recordset
Dim rs2 As Recordset, rs3 As Recordset
Set db = CurrentDb
Set rs1 = db.OpenRecordset("Query1")
Set rs2 = db.OpenRecordset("Query2")
Set rs3 = db.OpenRecordset("Tabella2")
rs2.MoveFirst
Do Until rs2.EOF
    rs1.MoveFirst
    Do Until rs1.EOF
        rs3.AddNew
        rs3!Padri = rs1!Padri
        If IsNull(DLookup("[Padri]", "Tabella1", _
        "[Padri]=" & Chr$(34) & rs1!Padri & Chr$(34) & _
        " And [Figli]=" & Chr$(34) & rs2!Figli & Chr$(34))) Then
        rs3!Figli = "BUCO " & rs2!Figli
        Else
        rs3!Figli = rs2!Figli
        End If
        rs3.Update
        rs1.MoveNext
    Loop
    rs2.MoveNext
Loop
rs1.Close
Set rs1 = Nothing
rs2.Close
Set rs2 = Nothing
rs3.Close
Set rs3 = Nothing
db.Close
Set db = Nothing
Ma mi sembra di capire che una soluzione del genere non la ritieni
performante vista la mole dei dati. :-)
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

ASP).
Mi sa che pretendi troppo :-|
--
Lorenzo Coronati
--
<<Ragazzi, sapete indicarmi una utility in 
internet che sia in grado di recuperare le 
password da un database access e da un system mdw?
intendevo, gratuita...>>
(Marco Tullio Bisoli, 27/04/2001)
--

performante vista la mole dei dati. :-)
No, per di piu' in ASP ciclare sui recordset non e' cosa molto ben fatta,
meglio succhiare tutt ii record con getrows e lavorare sulla matrice.
Quello che dovevo fare alla fine l'ho fatto...solo che ho dovuto usare 5
matrici (una per  recordset della query, una per l'eleco con i buchi,  uan
di appoggio prima di accodare e due per le due liste finali). Se sono grosse
il server potrebbe non gradire, soprtattutto  in caso di molti accessi
contemporanei. Ecco perche' cercavo un modo per ridurre i passaggi.
Saluti.
Luciano
(DCO)

Mi sa che pretendi troppo :-|
Dici?:-)
Saluti.
Luciano
(DOC)