Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    union su due db campi diversi

    Salve a tutti,
    ho un db (contatti) con due tabelle (istituti, Persone), con soli 4 campi simili (nome, cellulare, fax, mail), gli altri campi sono differenti.
    Vorrei impostare una query di ricerca, ma non ci riesco, leggendo i post precedenti sono riuscito a risolvere in questo modo:

    codice:
    sql = "SELECT istituti.*, Persone.* FROM istituti, Persone WHERE Persone.nome LIKE '%" & termine & "%' OR Persone.indirizzo LIKE '%" & termine & "%' OR Persone.gruppo LIKE '%" & termine & "%' OR istituti.gruppo LIKE '%" & termine & "%' OR istituti.nome LIKE '%" & termine & "%' OR istituti.mail LIKE '%" & termine & "%' OR Istituti.fax LIKE '%" & termine & "%' "
    In questo caso la query funziona, ma non riesco a stamparmi i recordset, se faccio:

    Response.write Recordset("gruppo")

    mi da quest'errore:
    Item cannot be found in the collection corresponding to the requested name or ordinal.

    Grazie, ciao.

  2. #2
    la parte sql mi sembra corretta,
    prova a postare anche il resto del codice, oppure prova a richiamarlo da RecordSet.Fields("Gruppo").

    Ciau!
    - Dean

  3. #3
    probabilmente 'gruppo' è campo di più tabelle, quindi lo devi referenziare (tabella.campo)

  4. #4
    thnx per le risposte,
    infatti è proprio così, gruppo è presente in più tabelle, ma facendo in questo modo

    Response.write(rs(0))
    mi stampa il primo campo del recordset, e facendo anche rs(14) mi stampa il campo appartenente all'altra tabella.

    ho provato a fare:
    Response.write(rs(istituti.gruppo)) ma non funziona.

    Come potrei fare?

    Grazie, ciao

  5. #5
    dario, mai mettersi a programmare dopo aver mangiato così abbondantemente

    Response.write(rs("istituti.gruppo"))

  6. #6
    dario, mai mettersi a programmare dopo aver mangiato così abbondantemente
    Beh, si dice che il gallo canta a stomaco pieno

    Grazie per la dritta Optime, purtroppo penso di aver sbagliato qualcosa alla base:

    Questa è una parte del codice che dovrebbe interessare, la query l'ho rimpicciolita (tanto dovrebbe funzionare lo stesso )
    codice:
    sql = "SELECT istituti.*, Persone.* FROM istituti, Persone WHERE Persone.nome LIKE '%" & termine & "%' OR istituti.nome LIKE '%" & termine & "%' "
    
    recset.Open sql, conn, 1, 3
    
    do while not recset.eof
    Response.write(recset(0)&", "&recset(1)&", "&recset(2)&", "&recset(3)&", "&recset(4)&", "&recset(5)&", "&recset(6)&", "&recset(7)&", "&recset(8)&", "&recset(9)&", "&recset(10)&", "&recset(11)&", "&recset(12)&", "&recset(13)&", "&recset(14)&", "&recset(15)&", "&recset(16)&", "&recset(17)&", "&recset(18)&", "&recset(19)&", "&recset(20)&", "&recset(21)&", "&recset(22)&", "&recset(23)&", "&recset(24)&", "&recset(25)&", "&recset(26)&", "&recset(27)&", "&recset(28)&", "&recset(29)&", "&recset(30)&", "&recset(31)&", "&recset(32)&"
    ")
    recset.MoveNext
    Loop
    Ponendo termine=Rossi,
    mi stampa questo risultato:
    codice:
    1, elementare, , , G.Lombardo Radice, , Via Regina Elena , , , , , mail@mail.it, , scuola, , , , 1, , Prof.Giuseppe Rossi, Paese, Paese, Paese, www.sito.it/link, mail@mail.it, , , , , , persone, , ,
    
    2, elementare, , , Circolo didattico Italo F, , Via Montello 7, , 0123-4568679 / 01234567, , , www.alboscuole.it/link, rxxxxxxxxx@istruzione.it, , scuola, , , , 1, , Prof.Giuseppe Rossi, Paese, Paese, Paese, www.sito.it/link, mail@mail.it, , , , , , persone, , ,
    
    3, media, , , Scuola Media Statale "B.Lanza", Santino Di Stasi, via C. Alvaro,, 01-2478925, , , http://web.web.it/link/, mail@tizznet.it, , scuola, , , , 1, , Prof.Giuseppe Rossi, Paese, Paese, Paese, www.sito.it/link, mail@mail.it, , , , , , persone, , ,
    la prima tabella "istituti" è formata da 17 campi, mentre la seconda "Persone" di 16 campi tot 33.
    In definitiva, possiamo notare che la prima tabella, dove non abbiamo presente il risultato avanza, mentre la seconda, abbiamo sempre lo stesso record, ovvero:
    1, , Prof.Giuseppe Rossi, Paese, Paese, Paese, www.sito.it/link, mail@mail.it, , , , , , persone, , ,

    Per concludere, seguendo la tua dritta, noteremo ovviamente che:
    Response.write(recset("istituti.gruppo")) sarà uguale a scuole
    Response.write(recset("Persone.gruppo")) sarà uguale a Persone

    ma in definitiva, se io cerco il termine "Rossi", dovrebbe selezionare solo quel dato campo in quella data tabella, e quando vado a referenziarlo, recset("gruppo") deve essere uguale a Persone e non a "Persone e/o scuole" e nome deve essere uguale a Prof Giuseppe Rossi, e non a tutto quell'ambaradam.

    Perdonami, forse prima avevi le idee più chiare e adesso te le ho confuse , grazie cmq per la tua pazienza e di quelli che mi vogliono dare una mano.

    Ciao.

    P.S. I dati delle tabelle sono alterati per motivi di privacy

  7. #7
    Non ho ben capito come sono legate le due tabelle.
    In effetti non usi nessun tipo di JOIN per legarle :O

    Ad esempio se ti interessa che abbiano lo stesso gruppo, dovresti impostare WHERE istituti.gruppo = persone.gruppo.
    Se le due tabelle sono completamente slegale, tanto vale effettuare due query sql indipendenti, una per la ricerca in persone, una per la ricerca in istituti.

    Ciau!
    - Dean

  8. #8
    è vero, hai ragione, scusa, le tabelle non sono legate, sono due tabelle completamente indipendenti, ma sullo stesso db, ho sbagliato a spiegarmi.

    vorrei impostare una ricerca di un termine su due tabelle, ma poi vorrei che il risultato da stampare me lo stampasse come se fosse un recordset unico.

    per quanto riguarda la tua tesi sulle tabelle diverse, potresti farmi gentilmente un esempio?
    anche senza riportare tutta la query intera, mi bastano pochi campi.

    Grazie, ciao.

  9. #9
    uhm... vediamo:
    codice:
    SQL = "SELECT * FROM istituti WHERE nome = '%" & nome & "%'"
    rs1 = Conn.Execute(SQL);
    SQL = "SELECT * FROM persone WHERE nome '%" & nome & "%'"
    rs2 = Conn.Execute(SQL)
    
    ' scorri il primo rs
    Do While Not rs1.EOF
    Response.Write( rs1(0) & ", " & rs1(1) ' etc...)
    rs1.MoveNext
    Loop
    ' scorri il secondo
    Do While Not rs2.EOF
    Response.Write( r2(0) & ", " & rs(2) ' etc...)
    rs2.MoveNext
    Loop
    
    'etc...
    Ciau!
    - Dean

    p.s. mi sembra che esista un modo per legare due tabelle indipendenti in un recordset. In pratica, se seleziona un recordset dalla seconda tabella, ti scrive NULL per tutti i campi per la prima tabella, e ovviamente il viceversa nell'altro caso. Temo sia un uso un po' improprio usarlo in questo modo cmq

  10. #10
    Grazie per il tuo aituo Atari,
    purtroppo, per me è molto importante crearmi un unico recordset, per il semplice fatto che poi quando andrò ad impaginare i risultati, non saprei come muovermi, con rs1.absolutepage o rs1.pagesize.

    forse union unisce i campi delle tabelle, mentre a me servirebbe estendere il recordset, ma non so proprio da dove iniziare.

    Grazie, ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.