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

    [MySQL] Utilizzo del comando LOWER

    Salve,
    ho bisogno di verificare se un nome utente e indirizzo email sono già presenti o meno nel mio database (per impedire registrazioni con gli stessi dati).
    Il confronto vorrei farlo non considerandolo case-sensitive, quindi ho scritto una query del tipo
    codice:
    SELECT COUNT(*) AS trovati
    FROM utenti,attivazioni
    WHERE LOWER(utenti.user)='".strtolower($username)."' OR
    LOWER(attivazioni.user)='".strtolower($username)."'
    "attivazioni" e "user" sono due tabelle che contengono rispettivamente gli utenti in attesa di verifica dell'indirizzo email e gli utenti registrati completamente.
    Ho visto che il comando LOWER() funziona bene se lo applico ad un solo campo di una sola tabella, mentre se lo applico alla mia query non funziona.
    Mi sapete dire come mai?

  2. #2
    La tua query non e' corretta. Non ci sono relazioni tra le due tabelle quindi non puoi fare un JOIN tra le due tabelle. Dovresti fare una query per tabella.

    Potresti provare con UNION e poi scorrere i due record ricevuti.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Scusa, non capisco cosa intendi.
    Io non ho bisogno di fare UNION o JOIN.
    La query
    codice:
    SELECT COUNT(*) AS trovati
    FROM utenti,attivazioni
    WHERE utenti.user='$username' OR
    attivazioni.user='$username'
    è corretta e viene eseguita correttamente da MySQL.
    Il problema sorge quando uso i due comandi LOWER...

  4. #4
    La tua query e' una JOIN in formato theta join detto anche equi-join.

    Tu invece vuoi sapere se esiste un dato in una tabella OPPURE in un altra. Non c'entra una sintassi che non da errori ma c'entra una sintassi che da risultati inattesi.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ok, ora ho capito.
    Qundi devo fare il controllo una query per la tabella "utenti" e una per la tabella "attivazioni"

    Ciao e grazie per l'aiuto

  6. #6
    Originariamente inviato da apusoft
    Ok, ora ho capito.
    Qundi devo fare il controllo una query per la tabella "utenti" e una per la tabella "attivazioni"

    Ciao e grazie per l'aiuto
    Bene. In pratica la tua query potrebbe servire a contare quante ricorrenze di un nominativo sono presenti in "entrambe le tabelle" fatta pero' nel seguente modo:
    codice:
    SELECT COUNT(*) AS trovati
    FROM utenti, attivazioni
    WHERE utenti.user = attivazioni.user
    AND utenti.user = '$username'
    togliendo la AND ti darebbe il conto di quanti utenti sono presenti in entrambe le tabelle.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da piero.mac
    La tua query e' una JOIN in formato theta join detto anche equi-join.
    ..facciamo CROSS JOIN ?

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.