Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: query su piu tabelle

  1. #1

    query su piu tabelle

    Buonasera ragazzi, sono nuovo nel forum, vi ho sempre seguito dall'esterno perche trovavo le soluzioni leggendo i post, ora invece non riesco a trovarla. ho bisogno di estrapolare il valore di una tessera con il numero piu alto, ma non riesco, vi posto il codice qui sotto

    codice:
    questa prima parte del codice mi estrapola le sezioni registrate e le converte in un unica variabile per la prossima query
    
    $Query_nome = "SELECT * FROM sezioni WHERE siglap = '$pv'";
    $rs=mysqli_query($connect, $Query_nome)
    or die("Errore nella query $Query_nome: " . mysqli_error($connect)); //die("<b>Errore:</b> Impossibile eseguire la query della Combo");
    $num = $row=mysqli_num_rows($rs);
    $i = "1";
    while ($row=mysqli_fetch_array($rs)) {
        if ($num <= $i) {
            $pvs .= str_replace(' ','_',$row['1']) ."_anagrafe";
         } else {
             $pvs .= str_replace(' ','_',$row['1']) ."_anagrafe, ";
         }
    $i++;
    }
    
    ora il mio problema: la query fa un controllo in piu tabelle nella variabile $pvs che sarebbe "orte_anagrafe, nepi_anagrafe, civita_castellana_anagrafe" variabile che cambia a seconda delle sezioni trovate
    
    $Query_nome = "SELECT * FROM ". $pvs ."";
    $rs=mysqli_query($connect, $Query_nome)
    or die("Errore nella query $Query_nome: " . mysqli_error($connect)); //die("<b>Errore:</b> Impossibile eseguire la query della Combo");
    $num = $row=mysqli_num_rows($rs);
    while ($row=mysqli_fetch_array($rs)) {
        $nt = $row['0'];
    }
     mi estrapola solo le variabili della sezione orte_anagrafe dalla 001 alla 007 ma quelle della sezione nepi_anagrafe dalla 009 alla 012  e civita_castellana_anagrafe 008 no, dove sbaglio? in poche parole voglio che nell'echo oppure nella variabile mi scriva che l'ultima tessera con il numero piu alto trovato è la 012
    echo "test - $nt";
    vi ringrazio anticipatamente.

  2. #2
    puoi fare un esempio dei dati che hai e del risultato che vorresti? se ci spieghi anche la struttura delle tabelle sarà più facile aiutarti

  3. #3
    Quote Originariamente inviata da optime Visualizza il messaggio
    puoi fare un esempio dei dati che hai e del risultato che vorresti? se ci spieghi anche la struttura delle tabelle sarà più facile aiutarti
    Allora in poche parole nella tabella sezioni ho
    Tabella sezioni
    id sezioni siglap
    1 orte_anagrafe vt
    2 nepi_anagrafe vt
    3 civita_castellana_anagrafe vt

    Tabelle varie orte_anagrafe, nepi_anagrafe, civita_castellana_anagrafe

    id ntessera
    1 001
    1 002
    id ntessera
    1 005
    2 006
    Ora vi ho messo solo due tabelle delle 3 tabelle che ho, in poche parole vorrei che mi dia solo il valore 006 che sarebbe la tessera con il numero piu alto

  4. #4
    Nessuno sa come aiutarmi?

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Una domanda. Perché hai tante tabelle soprattutto che hanno gli stessi campi e sembrano essere il dettaglio delle sezioni ?

    Fossi in te farei una tabella "dettaglio" fatta come segue :

    id,
    is_sezione,
    ntessera.

    In questo modo risolvi il tuo problema (almeno quello che ho capito del tuo problema) e non devi rifare tutto da capo se aggiungi una nuova sezione.

    id id_sezione ntessera
    1 1 001
    2 1 002
    3 2 003
    4 2 004
    5 3 005
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    altrimenti
    codice:
    SELECT MAX(MaxTessera) FROM
    (
       SELECT MAX(nTessera) AS MaxTessera FROM orte_anagrafe
       UNION
       SELECT MAX(nTessera) AS MaxTessera FROM nepi_anagrafe
       UNION
       SELECT MAX(nTessera) AS MaxTessera FROM civita_castellana_anagrafe
    )
    così, tanto per farsi del male aggratiss

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    @optime.

    E’ la soluzione. Pero’ è come mettere un cerotto su una gamba di legno. La struttura attuale delle tabelle non è da fare.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    @badaze sono d'accordo con te, quella struttura è assolutamente masochista. @Roberto.fila sistemerà, se può, seguendo il tuo consiglio

  9. #9
    con union ci avevo pensato però io le tabelle orte_anagrafe, nepi_anagrafe e civita_castella_anagrafe le estrapolo dalla tabella sezioni, quindi non sono solo quelle 3 ma possono diventare di piu, quindi che mi conviene fare?

  10. #10
    sennò posso creare una tabella chiamata tessera, che quando viene registrato un associato fa una somma sul numero e lo registra tipo

    codice:
    <table>
        <tr>
            <td>id</td>
            <td>provincia</td>
            <td>ntessera</td>
        </tr>
        <tr>
            <td>1</td>
            <td>VT</td>
            <td>001</td>
        </tr>
    </table>
    nuovo utente registrato in provincia di VT fa 001+1=002 e lo registra quindi quando vado a fare il check mi dice che l'ultima tessera nella provincia di VT è 002

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 © 2024 vBulletin Solutions, Inc. All rights reserved.