Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Ricerca in due database

    Ciao a tutti..e buon anno

    Mi trovo d'avanti a un problema mai riscontato
    Sto facendo una pagina di ricerca,
    inizialmente cervavo in una sola tabella tutti i prodotti che contenevano la parola ricercata

    ora per esigenze che non vi sto a spiegare, i db dei prodotti sono diventati 2 e vorrei effettuare la stessa ricerca in tutti e due i db

    il primo problema che mi sono posto è che se apro prima una connesisone e poi un'altra non mi ritrovo con l'ordinamento e con la paginazione

    quindi mi sono arenato...mi date qualche suggerimento

    mille grazie in anticipo

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Forse dovresti creare un array di informazioni già ordinate.
    Può essere una ipotesi.


    Roby

  3. #3
    Originariamente inviato da Roby_72
    Forse dovresti creare un array di informazioni già ordinate.
    Può essere una ipotesi.
    la soluzione potrebbe essere fattibile
    ma dovrei creare più array
    uno che contiene il nome, uno che contiene il prezzo e uno la descrizione, tutti con gli stessi indici
    e qui mi viene il primo dubbio? quanto peserà questo array?
    poi se creo una paginazione su questo array, avrei bisogno che andano a pagina 2 ho conservati tutti i dati, quindi dovrei creare una bella sessione, anche qui (credo) pesante

    poi anche sull'ordinamento ho dei dubbi
    l'array dovrei riempirlo con dei cicli prima di un db e poi di un'altro
    ma come faccio a ordinare i risultati?

  4. #4
    non so se è la sintassi giusta... ma funziona...
    apri la connessione ad un db e poi

    "select *, db as 1 from tabella union (select *, db as 2 from tabella in '" & server.mappath(altro_db) & ") ORRDER ..."

    utilizzando il campo db vedi a quale db appartinene il record...
    probabilmente da aggiustare qualche cosina ma già lo usai in passato
    (non mi ricordo se usai anche order)


  5. #5
    non c'ho capito molto
    sto cercando il commando union ma per ora ho trovato solo come applicarlo a due select magari di tabelle diverse tipo così

    Select * from tabella union Select * from secondatabella

    io sto scrivendo così
    codice:
    	strdbpath= Server.MapPath("/database/prodotti.mdb")
    	strconn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strdbpath & ";"
    	set dbdati=Server.CreateObject("ADODB.Connection")
    	dbdati.Open strconn
    	set rsdati=Server.CreateObject("ADODB.Recordset")
    
    	sql ="select * from prodotti union (select * from prodotti in '" & server.mappath("/database/trade.mdb") & ")' "
    	
    	rsdati.open sql,dbdati	
    	
    	do until rsdati.eof
    		
    		response.Write(rsdati.fields(0) &"
    ")
    
    	rsdati.movenext
    	loop
    ma naturalmente non và
    potresti , gentilmente, darmi qualche indicazione di più

  6. #6
    stai usando Access?

  7. #7

  8. #8
    codice:
    sql = "select * from prodotti"
    sql = sql & " union "
    sql = sql & " select * from prodotti in '" & server.mappath("/database/trade.mdb") & "' "

    dovrebbe funzionare

  9. #9
    mille grazie

    funziona...anche se ora devo capire come usarla al 100%

    se scrivo
    codice:
    select nome_prod from prodotti where [nome_prod] like '%ta%' union (select [Product name] as nome_prod from prodotti in '\database\trade.mdb' where [Product name] like '%ta%' ) order by nome_prod
    quindi prendo un campo per tabella, funziona bene

    mentre se voglio prendere più campi o adirittura fare delle join per una tabella
    e solo un campo per l'altra tabelle (db)
    non funziona

    codice:
    SELECT prodotti.*, fornitori.nome, tariffe_riv.sconto FROM ((famiglie INNER JOIN categorie ON famiglie.id_famiglia = categorie.id_famiglia) INNER JOIN (fornitori RIGHT JOIN prodotti ON fornitori.id_forn = prodotti.marca) ON categorie.id_categoria = prodotti.Cat) LEFT JOIN tariffe_riv ON prodotti.sconto_riv = tariffe_riv.idtar WHERE (nome_prod like '%win%' or descr_short like '%win%' or descr_long like '%win%' or fornitori.nome like '%win%') union (select [Product name] as nome_prod from prodotti in '\database\trade.mdb' where [Product name] like '%win%' ) order by nome_prod
    mi dice
    Numero di colonne non corrispondente nelle due tabelle o query selezionate di una query di unione

  10. #10
    quando fai una UNION i campi nelle n tabelle debbono essere uguali sia per numero che per tipo

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.