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

    Ricerca tra più tabelle.

    Salve io ho un database dove ad ogni utente corrisponde una tabella.
    la struttura semplificata è questa

    -Utente A
    --ABC
    --DEF
    --GHI

    -Utente B
    --LMN
    --OPQ
    --RST

    -Utente C
    --UVW
    --XYZ

    Quando viene inserito un nuovo elemento per un utente vorrei controllare che esso non sia già stato preso da un'altro utente.
    ho letto che bisogna usare il comando JOIN nella query, ma non ci ho capito un granchè.

    Sarebbe possibile che la query ritornasse il nome di chi ha già preso l'elemento nel caso trovasse riscontro?

    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ad occhio mi sa che hai sbagliato la struttura del database... perché ogni utente ha una sua tabella dedicata? non potevi avere una tabella con gli utenti ed una tabella con i dati e l'id dell'utente (o in caso di molti-a-molti, una tabella con gli utenti, una con altri dati ed una di "raccordo" id_utente -> id_dato)? Se puoi modificare la struttura del database, ne guadagni...altrimenti le cose si complicano (sarà l'ora di cena, ma non mi viene in mente un modo di fare quel che vuoi con una query sola)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    innanzi tutto grazie per la risposta.
    Ho disposto il db in questa maniera perchè i 9/10 delle operazioni che devo fare, essendo il db abbastanza consistente, preferisco che siano su una tabella sola e svelte, e che questa sia + complessa.
    la versione precedente era strutturata come dicevi te a grandi linee, e, a furia di dover fare query dentro cicli la pagina si fossilizzava.

    L'unico modo per fare tutte le altre in fretta è questo.

    (ma possibile che il mysql non abbia un comando per cercare internamente ad un intero database? :berto: )

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    se i campi che necessariamente devono essere diversi fossero UNIQUE, il problema non ti si presenterebbe nemmeno. Di quante righe era la tabella che hai spezzettato? anche con diverse migliaia di records non dovresti avere grossi problemi, scegliendo accuratamente gli indici.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    senza scomodare il join che serve per le relazioni tra tabelle, secondo me ti conviene costruire la query dinamicamente tipo così...

    ti crei un array con i nomi delle tabelle/utenti in cui cercare, magari li ricavi da un campo in una tabella generale o trovati di volta in volta con mysql_list_tables e lo cicli con una query tipo

    $query="SELECT * FROM $nometabellautente ... etc";

    magari però non ho capito bene il problema, le colonne per esempio hanno lo stesso nome in tutte le tabelle utente? ti serve confrontare una sola colonna per tabella o una sola riga?

    in generale ne hai per tutti i gusti http://it.php.net/manual/it/function...ist-tables.php

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.