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

    Query complessa: help !

    Salve

    Devo implementare (mio malgrado) in un'intranet aziendale un sito web in ASP che si poggia su MySQL, questo sito ha il compito di distribuire i documenti ISO9000 ai vari dipendenti.
    Per ogni dipendente nel database vi è una tabella specifica al cui interno vi sono elencati i codici dei documenti accessibili, ed unicamente quelli.
    In un'altra tabella vi sono contenuti i dati dei singoli documenti: codice, file pdf su disco, distribuzione ecc ecc ecc.

    Il mio intento è poter realizzare quanto segue:

    1) l'utente Pippo immette login e password nell'home page del sito
    2) una query seleziona la tabella specifica per l'utente Pippo, tabella che al suo interno ha l'elenco dei documenti spettanti a Pippo
    3) Trovati i documenti attivati per Pippo, un'altra query dovrebbe andare ad operare sulla tabella dei documenti, estraendo i dati (file pdf su disco, distribuzione ecc ecc) SOLO dei documenti attivati per Pippo
    4) Pippo si ritrova davanti ad una pagina con vari link ai documenti per lui attivati

    I punti 1, 2 e 4 so gestirli abbastanza bene, il mio problema è far interagire la tabella con l'elenco dei documenti attivati con la tabella contenente i dati di tutti i documenti, in maniera che ne risulti un recordset con SOLO i dati dei documenti attivati.

    Suggerimenti ?

    Grazie mille a chi mi dà una mano

  2. #2
    se non ho capito male ti stai perdendo in un bicchier d'acqua...

    una volta che hai estratto dal db i documenti che spettano a pippo, il gioco e' fatto

    sai che i documenti con id=1 id=2 id=n possono essere visti da pippo, quando leggi dallla tabella documenti gli passi l'id e ne prelevi le informazioni...

  3. #3
    In effetti mi viene il dubbio che mi incasinando per una cavolata... è che spesso ci penso troppo e finisco per creare casini

    Ho capito cosa intendi ma quello che volevo fare io mi sa che è diverso...

    La tabella tb_pippo contiene i seguenti record (un solo campo a record)

    Doc1
    Doc3
    Doc5
    ...
    Doc23
    ecc ecc

    La tabella tb_documenti è strutturata così:

    Doc1 | Titolo documento | nomefile.pdf | bla bla bla |
    Doc2 | Titolo documento | nomefile.pdf | bla bla bla |
    Doc3 | Titolo documento | nomefile.pdf | bla bla bla |
    Doc4 | Titolo documento | nomefile.pdf | bla bla bla |
    ...
    DocN | Titolo documento | nomefile.pdf | bla bla bla |

    e deve essere toccata il meno possibile e deve soprattutto rimanere unica.

    L'utende dopo loggato, si deve trovare di fronte una pagina che si basa su di un recordset che è il risultato della "scrematura" della tb_documenti in base alla tb_pippo.

    O mi sto incasinando per nulla ?

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    una query tipo
    codice:
    SELECT * FROM tabellaDati WHERE IDtabellaDati IN (SELECT IDtabellaCodiciCliente FROM tabellaCodiciCliente)

  5. #5
    allora nella tabella "pippo" avrai una cosa tipo:

    id id_documento
    1 20
    2 12
    3 4

    pippo puo' aprire i documenti con gli id sopra

    nella tabella docuemnti avrai
    id percorso ....
    20 /doc/doc1.pdf ....
    12 /doc/doc1.pdf ....
    4 /doc/doc1.pdf ....

    giusto? immagino tu abbia strutturato cosi' la cosa....

    quando fai la select sulla tabella pippo presenterai una serie di link, con il collegamento alla pagina che si occupera' di prelevare le informazioni relative a quel documento in particolare

    per esempio:
    SELECT * FROM pippo

    ">testo del link

    spero di essere riuscito a spiegarmi...
    sclerato

  6. #6
    Originariamente inviato da willybit
    una query tipo
    codice:
    SELECT * FROM tabellaDati WHERE IDtabellaDati IN (SELECT IDtabellaCodiciCliente FROM tabellaCodiciCliente)
    Uhm... adesso non posso provarla perchè sono a casa... però a prima vista direi che forse è quello che serve.

    Sapendo che:

    1) la tabella tb_utente ha un solo campo nome_documento
    2) che la tabella tb_elenco_doc ha il primo campo nome_documento (non contiene indici, non credo servano) e che è univoco

    come esce fuori quella query ?

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    così
    codice:
    SELECT * FROM tb_documenti WHERE nome_documento IN (SELECT nome_documento FROM tb_utente)

  8. #8
    Grande !

  9. #9
    Originariamente inviato da willybit
    così
    codice:
    SELECT * FROM tb_documenti WHERE nome_documento IN (SELECT nome_documento FROM tb_utente)
    Alla fine questo è il risultato funzionante che ho realizzato:

    codice:
    SELECT codice_procedura, titolo_procedura  
    FROM tb_procedure INNER JOIN  "&user_table&" ON  tb_procedure.codice_procedura = "&user_table&".documenti  
    ORDER BY codice_procedura ASC
    Adesso vorrei aggiungere una cosa:
    user_table contiene il nome della tabella riferita all'utente che si è loggato, user_table.documenti è il campo conentente i documenti spettanti all'utente.
    Qualora volessi fare in modo che l'elenco dei documenti attivati per l'utente derivasse non da una tabella nuda e cruda MA dal risultato di una query eseguita su tale tabella, come dovrei modificare il tutto ?

    Attualmente le tabelle utenti hanno un solo campo, contenente i nomi dei documenti a loro spettanti, quello che vorrei fare io è rendere uniformi le tabelle per tutti gli utenti, creando un ulteriore campo "documento_attivato" che conterrebbe solo un flag SI/NO.
    La query sulla tabella utente andrebbe a estrapolare solo i documenti con il flag documento_attivato impostato su SI per poi fare il join con la tabella dei documenti.

    Spero di essermi spiegato...

  10. #10
    Volevo modificare ma ho lasciato passare troppo tempo...
    In pratica vorrei che il join avvenisse tra un recordset e una tabella...

    Nessuno ha un'idea su come fare ?

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.